Robolectricを使用して Android コードをテストしていますが、シャドウ メソッドを持たないメソッドがいくつかあるため、いくつかのテストが失敗することがわかりました。
私のロジック コードでは、別のアクティビティからビットマップを取得しました。
Bitmap bitmap = getBitmapFromResult(data);
BitmapDrawable drawable = new BitmapDrawable(getResources(), bitmap);
imageView.setImageDrawable(drawable);
後で別の方法で、からビットマップを取得し、imageView
ファイルに保存します。
BitmapDrawable drawable = (BitmapDrawable)imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();
// save to file
bitmap.compress(...);
ただし、テスト時に最後の行で NullPointerException がスローされます。
コードをデバッグしたところ、テスト コードが robolectric で実行されているときに、ビットマップdrawable
がShadowBitmapDrawable
含まれていることがわかりました。null
したがって、例外を引き起こすdrawable.getBitmap()
a を返します。null
次に、テスト コードでログを有効にしました。
Robolectric.logMissingInvokedShadowMethods();
テストコードが失敗した原因と思われるコンソールの行が見つかりました:
No Shadow method found for BitmapDrawable.<init>(android.content.res.Resources, android.graphics.Bitmap)
今何ができますか?それを修正するためにシャドウメソッドを追加することは可能ですか?それを行う方法は?