我正在為這些方法進行 JUnit 測驗,我花了幾個小時試圖改進它但沒有成功,測驗通過了,但我得到了 0% 的覆寫率,知道我為什么會這樣嗎?
AuthService.java
public String getUsers() {
if (studentBean.getUsers() == null || checkIfTokenExpired()) {
this.fetchStudents();
}
return studentBean.getUsers();
}
public boolean checkIfTokenExpired() {
LocalDateTime currentDateTime = LocalDateTime.now();
LocalDateTime expiryTime = setExpiryTime();
boolean isTokenExpired = currentDateTime.isAfter(expiryTime);
return isTokenExpired;
}
JUnit test:
@Mock
StudentBean studentBean;
@Mock
AuthService authService;
@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testGetUsers(){
Mockito.when(studentBean.getUsers()).thenReturn(null);
Mockito.when(authService.checkIfTokenExpired()).thenReturn(false);
Mockito.when(authService.getUsers()).thenReturn("APSAPS");
assertEquals("APSAPS", authService.getUsers());
}
謝謝!
uj5u.com熱心網友回復:
您應該在 AuthService 中注入模擬。
您可以使用@InjectMocks做到這一點
此外,由于您想測驗“getUsers”方法,您不應該為它模擬該方法。
我們只模擬被模擬屬性的方法,而不是被測服務。
@Mock
StudentBean studentBean;
@InjectMocks
AuthService authService;
@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testGetUsers(){
Mockito.when(studentBean.getUsers()).thenReturn(null);
//Mockito.when(authService.checkIfTokenExpired()).thenReturn(false);
//Mockito.when(authService.getUsers()).thenReturn("APSAPS");
// assertEquals("APSAPS", authService.getUsers());
String result = authService.getUsers();
//... perform assertions
}
使用此代碼將觸發您的fetchStudents方法,您應該斷言相同。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/513960.html
