我正在測驗需要自動連線服務的控制器。
我在很多地方讀過(例如Mockito:How to test my Service with mocking?)我需要這樣做
@RunWith(JUnitPlatform.class)
public class AdminControllerTest {
@Mock
private AdminService service;
@InjectMocks
private AdminController adminController;
@Test
public void registerUser() {
Boolean resultReal = adminController.registerUser();
assertTrue(resultReal);
}
}
但它失敗了,我看到是因為 adminController 為空
相反,如果我像這樣創建控制器
AdminController adminController = new AdminController();
它有效,但隨后我可以注入模擬。
也許我忘記了什么
uj5u.com熱心網友回復:
根據InjectMocks 的檔案:
必須呼叫 MockitoAnnotations.openMocks(this) 方法來初始化帶注釋的物件。在上面的例子中,在測驗基類的@Before (JUnit4) 方法中呼叫了 openMocks()。對于 JUnit3 openMocks() 可以轉到基類的 setup() 方法。相反,您也可以將 openMocks() 放在您的 JUnit 運行程式 (@RunWith) 中或使用內置的 MockitoJUnitRunner。
因此,要么:
openMocks(this)在測驗運行之前呼叫某個地方或@RunWith(MockitoJUnitRunner.class)在課堂上使用
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/352827.html
