2016-12-27 3 views
1

私はj2objcを使ってビルドされたcocoapodを使用するアプリケーションを開発中です。私はXcodeでユニットテストを実行しようとする。しかし、私は次のエラーを参照してください。j2objc例外はユニットテストが実行されないようにします

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

私はJavaでの配列は、Objective Cの配列に完全にマップされないことを理解しています。しかし、この例外はアプリの実行を妨げるものではないので、単体テストやUIテストでこれを無視する方法はありますか?

コードがココアポッド内にあるため、手動での変換はできません。ここで失敗していますラインです:

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を変換することは理想的な解決策ですが、ココアポッドの内部にあるので、私はそれに直接アクセスできません。また、私はそれを無視する方法があった場合、それは良いだろう、例外は、アプリをクラッシュすることはありません。 – AdColvin

0

これは、失敗している行のようには見えません。このエラーメッセージはSystem.arraycopyからのもので、IOSByteArrayはIOSArrayのサブクラスではないことを知らせませんでした。which it is IOSObjectArrayは、ArrayStoreException hereだけをスローし、別のエラーメッセージを表示します。

ユニットテストのソースがありますか?もしあれば、そのプロジェクトまたはそのプロジェクト(オープンソースの場合)を投稿できますか?失敗したテストのあるfile a j2objc issueには、修正されるとすぐに通知されます。

これがJUnitテストの場合、Javaの場合と同様に、失敗した行をtry/catchブロックで囲むことができます。またはコメントしてください。 ;-)

関連する問題