我正在开发一个使用cocoapod的应用程序,它是使用j2objc构建的。但是当我尝试在Xcode中运行单元测试时,我看到以下错误:
Terminating app due to uncaught exception 'JavaLangArrayStoreException', reason: 'source of type IOSByteArray is not an array'
据我所知,Java中的数组并不完美映射到Objective C数组。但是这个异常并不会阻止应用程序运行,那么有没有办法忽略单元测试和UI测试呢?
失败的代码在cocoapod中,所以我不确定我是否能够进行任何手动转换。这是失败的路线:
return IOSObjectArray_Get(nil_chk([rawType getGenericInterfaces]), i);
答案 0 :(得分:0)
我不知道您的代码,但您必须了解Objective-C数组与IOSByteArray
不一样!
在使用之前,您必须将IOSByteArray
转换为常规的objc数组。
使用这个
- (void)getBytes:(jbyte *)buffer
offset:(jint)offset
length:(jint)length;
或者
- (NSData *)toNSData;
工作方法。
答案 1 :(得分:0)
这看起来不像失败的那条线。该错误消息来自System.arraycopy,它没有说IOSByteArray不是IOSArray的子类which it is。 IOSObjectArray仅抛出ArrayStoreException here,并显示不同的错误消息。
您是否拥有单元测试的来源,如果有,您可以发布它或它的项目(如果它是开源的)?如果您file a j2objc issue未通过测试,则会在修复后立即通知您。
如果这是一个JUnit测试,你可以使用try / catch块来包围失败的行,就像在Java中一样。或者评论出来。 ; - )