1

我正在开发一个使用 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);
4

2 回答 2

0

我不知道您的代码,但您必须了解 Objective-C 的数组与IOSByteArray!

在使用它之前,您必须转换IOSByteArray为通常的 objc 数组。

使用这个

- (void)getBytes:(jbyte *)buffer
          offset:(jint)offset
          length:(jint)length;

或这个

- (NSData *)toNSData;

工作方法。

于 2016-12-27T21:00:19.620 回答
0

这看起来不像是失败的线路。该错误消息来自 System.arraycopy,它未能说明 IOSByteArray 不是 IOSArray 的子类,它是. IOSObjectArray 仅在此处抛出 ArrayStoreException ,并带有不同的错误消息。

你有单元测试的源代码吗?如果有,你能发布它或它的项目(如果它是开源的)吗?如果您在未通过测​​试的情况下提交 j2objc 问题,您将在问题修复后立即收到通知。

如果这是一个 JUnit 测试,您可以像在 Java 中一样用 try/catch 块包围失败的行。或者注释掉。;-)

于 2016-12-28T06:58:14.583 回答