2016-12-27 72 views
1

我正在使用使用j2objc構建的cocoapod的應用程序。但是,當我嘗試運行單元測試在Xcode我看到下列錯誤:j2objc異常阻止運行的單元測試

Terminating app due to uncaught exception 'JavaLangArrayStoreException', reason: 'source of type IOSByteArray is not an array' 

據我所知,在Java數組不完全映射到目標C數組。但是這個異常並不妨礙應用程序的運行,那麼有沒有辦法忽略這個單元測試和UI測試呢?

失敗的代碼是在一個cocoapod中,所以我不確定我能夠做任何手動轉換。這裏是一個的失敗行:

return IOSObjectArray_Get(nil_chk([rawType getGenericInterfaces]), i); 
+0

提供您的代碼 – Vyacheslav

回答

0

我不知道你的代碼,但你必須瞭解的Objective-C的數組作爲IOSByteArray不-THE一樣!

在使用它之前,您必須將IOSByteArray轉換爲通常的objc數組。

兼用這

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

或該

- (NSData *)toNSData;

方法工作。

+0

請參閱修改後的問題。轉換IOSByteArray將是理想的解決方案,但我不能直接訪問它,因爲它在cocoapod中。另外,當我運行它時,異常不會導致應用程序崩潰,所以如果有一種方法可以忽略它,那將會很好。 – AdColvin

0

這看起來不像是失敗的那條線。該錯誤消息來自System.arraycopy,該錯誤消息說IOSByteArray不是IOSArray的子​​類which it is。 IOSObjectArray只會拋出一個ArrayStoreException here,並帶有不同的錯誤消息。

您是否擁有單元測試的源代碼?如果是,您可以發佈它還是它的項目(如果它是開源的)?如果您的file a j2objc issue測試失敗,您會在修復後立即收到通知。

如果這是一個JUnit測試,那麼您可以用try/catch塊圍繞失敗的行,就像在Java中一樣。或者註釋掉。 ;-)