我正在使用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()
返回一个null
导致异常的。
然后我启用了登录我的测试代码:
Robolectric.logMissingInvokedShadowMethods();
在控制台中发现一行我认为导致我的测试代码失败:
No Shadow method found for BitmapDrawable.<init>(android.content.res.Resources, android.graphics.Bitmap)
我现在能做什么?是否可以添加阴影方法来修复它以及如何做到这一点?