[英]Junit mockito when(..).thenReturn() throws NullPointerException
[英]Error while trying to use when and thenReturn in JUnit Testing and Mockito (NullPointerException)
我正在嘗試在 Android Studio 中創建單元測試,當我調用 function presenter.getImageFile() 時,它顯示 NullPointerException
@Test
public void shouldCallForErrorWhenImageFileIsNull() throws IOException {
when(presenter.getImageFile()).thenReturn(null);
presenter.captureImage();
verify(view).cameraImageFileError();
}
上面的代碼來自我的測試文件,下面的代碼來自我的 Presenter class 的部分。
@Override
public File getImageFile() throws IOException {
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.ENGLISH).format(new Date());
String imageName = "jpg_" + timeStamp + "_";
File imageFile = File.createTempFile(imageName, ".jpg", storageDir);
setPrevImagePath(getCurrentImagePath());
setCurrentImagePath(imageFile.getAbsolutePath());
Log.d("MainActivity#FilePath", imageFile.getAbsolutePath());
return imageFile;
}
執行上述代碼時,我收到以下錯誤:
java.lang.NullPointerException
at java.io.File.<init>(File.java:363)
at java.io.File$TempDirectory.generateFile(File.java:1916)
at java.io.File.createTempFile(File.java:2010)
at com.example.imagepicker.presenter.MainActivityPresenter.getImageFile(MainActivityPresenter.java:76)
at com.example.imagepicker.ExampleUnitTest.shouldCallForErrorWhenImageFileIsNull(ExampleUnitTest.java:49)
這里 MainActivity Presenter 中的第 76 行是: File imageFile = File.createTempFile(imageName, ".jpg", storageDir); 我的 UnitTest 中的第 49 行是:when(presenter.getImageFile()).thenReturn(null);
如果您嘗試模擬您正在測試的 class 的整個方法,那么您可以將 PowerMockito 與 Spy 類一起使用。 這里有些例子:
這里的問題是您試圖模擬您正在測試的 class 方法的行為。 您需要監視 class 來執行它而不是模擬。
只需在textClass中的presenter class初始化上方添加@Spy注解
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.