【发布时间】:2012-10-01 13:59:35
【问题描述】:
我正在使用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)
我现在能做什么?是否可以添加阴影方法来修复它以及如何做到这一点?
【问题讨论】:
标签: android testing shadow robolectric