簡體   English   中英

嘗試在 JUnit 測試和 Mockito 中使用 when 和 thenReturn 時出錯(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM