У меня есть программа, которая создает уменьшенное изображение из полноразмерного изображения, сохраненного в области хранения.Я пытаюсь протестировать эту функциональность с помощью mockito, но она выдает мне следующую ошибку:
java.lang.RuntimeException: метод decodeFile в android.graphics.BitmapFactory не смоделирован
// Решено (обновлен код)
Я впервые запускаю модульные тесты с использованием mockito. Может, кто-нибудь подскажет, что я делаю неправильно (что я точно знаю).Я также использую ExifInterface для извлечения метаданных, связанных с изображением, но снова выдает ту же ошибку: java.lang.RuntimeException: метод getAttribute в android.media.ExifInterface не подвергается насмешке.
Вот класс 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();
}
}
Спасибо за вашу помощь, ребята.Пожалуйста, извините, если я делаю что-то не так.