gpt4 book ai didi

android - 如何模拟 BitmapFactory : Method decodeFile

转载 作者:行者123 更新时间:2023-11-29 18:41:23 26 4
gpt4 key购买 nike

我有一个程序可以从存储区中保存的全尺寸图像创建缩略图。我正在尝试使用 mockito 测试该功能,但它给了我以下错误:

java.lang.RuntimeException:未模拟 android.graphics.BitmapFactory 中的方法 decodeFile

//已解决(更新代码)

我是第一次使用 mockito 运行单元测试,有人可以建议我做错了什么(我知道确实在做)。我还使用 ExifInterface 提取与图像关联的元数据,但它再次给我同样的错误:java.lang.RuntimeException:未模拟 android.media.ExifInterface 中的方法 getAttribute。

这是 MainActivity 类:(我在其中运行该方法)。

 public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initValue();
}

public void initValue()
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
Bitmap thumbnail = createThumbnailFromBitmap("/storage/emulator/0/demo/abcd", 100, 100);

try {
ExifInterface exifInterface = new ExifInterface("/storage/emulator/0/demo/abcd");
String jsonData = exifInterface.getAttribute("UserComment");

try {
JSONObject rootJson = new JSONObject(jsonData);
dateList.add(rootJson.getString("captured"));

}

catch(JSONException e)
{
}
}
catch(Exception e)
{
System.out.println("exception "+e);
}
}

private Bitmap createThumbnailFromBitmap(String filePath, int width, int height){
return ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(filePath), width, height);
}

}

我的测试类:

 @RunWith(PowerMockRunner.class)
@PrepareForTest({BitmapFactory.class ,ThumbnailUtils.class})
public class initValueTest {


@Mock
private Bitmap bitmap;


@Test
public void initValueTest()
{
PowerMockito.mockStatic(BitmapFactory.class);
PowerMockito.mockStatic(ThumbnailUtils.class);
when(BitmapFactory.decodeFile(anyString())).thenReturn(bitmap);
MainActivity mainActivity = new MainActivity();
mainActivity.initValue();
}
}

谢谢大家的帮助。如果我做错了什么,请原谅。

最佳答案

您可以:

  • 使用 power mock 模拟静态方法 decodeFile。看码头吧here
  • 将位图解码逻辑提取到一个单独的类中,提取接口(interface)并提供运行时的不同实现。

关于android - 如何模拟 BitmapFactory : Method decodeFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52971130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com