簡體   English   中英

在 Junit Mockito 上調用 doNothing() 時出現 NullPointerException

[英]NullPointerException when doNothing() is called on Junit Mockito

我正在使用 Mockito 編寫我的單元測試,但是我在與我的測試 class 相同的 class 中存根方法時遇到了一些錯誤。

所以基本上,我正在測試我的服務 class MyService.class( Subject being testing),這就是我聲明我的 Mocks 和 @InjectMocks 的方式。

每當我在使用 doNothing() 時點擊 checkUserBackground() 方法時,我都會面臨 null 指針,因為該方法返回 void。 我也嘗試過使用 verify() 但我收到錯誤消息“需要但未調用”。

我如何通過這個錯誤? 被卡了13個小時,感謝一些幫助,謝謝!

@ExtendWith(MockitoExtension.class)
@MockitoSettings(strictness = "Strictness.LENIENT")
class MyServiceTest {

@InjectMocks
private MyService myService;



@Test
void testCreateUser() {
  User user = new User();
  user.setAge(25);
  user.setName(Jack);


  Mockito.doNothing().when(myService).checkUserBackground(user.getName(), true); 
  assertEquals(myService.createUser().getName(), "Jack");
}
}

這是實際的服務 class:

class MyService() {
 public static void createUser(User user) {

  checkUserBackground(user.getName(), true);      //Null Pointer here

}

public void checkUserBackground(String name, Boolean newUser){

 //some logic which doesnt matter
}

}

注釋@InjectMock用於依賴注入——它真正的 class bean。 但稍后在方法中,您嘗試注入 bean 的模擬方法。 在您添加方法而不是注釋時,您的情況將是足夠的:

@Before
public void init() {
    myService = Mockito.mock(MyService.class)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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