報錯信息
java.lang.NullPointerException
空指針異常
空對象引用
來源
對Controller層進行單元測試,解決完Spring上下文報錯后繼續報錯。
解決
在測試方法執行前要為字段完成對象的注入,否則就報空指針異常。
測試例子
public class SysUserControllerTest {@InjectMocks// 在單元測試中沒有啟動Spring框架時,通過@InjectMocks完成依賴注入private SysUserController sysUserController;@Mock// 創建模擬對象private SysUserService sysUserService;@BeforeEach// JUnit5 棄用Before,每個測試方法執行之前初始化測試環境public void setUp() {MockitoAnnotations.openMocks(this);// 初始化被@Mock、@Spy、@Captor 和 @InjectMocks 注解的字段}@Testpublic void testSelectOne() throws Exception {// 準備測試數據Serializable id = 1;SysUser sysUser = new SysUser();sysUser.setId(1L);sysUser.setUserName("admain");// 設置mock對象行為// 設置sysUserService的 getById 方法的返回值為 sysUserwhen(sysUserService.getById(id)).thenReturn(sysUser);// 調用被測試的方法// 調用 sysUserController 的 selectOne 方法,并傳入 id 參數ResponseResult<SysUser> responseResult = sysUserController.selectOne(id);// 如果 responseResult 的 Code 字段等于 200
// if (responseResult.getCode() == 200) {
// // 打印 responseResult 的 JSON 字符串形式
// System.out.println(JSON.toJSONString(responseResult));
// }// 斷言驗證結果assert (responseResult.getData().getUserName().equals(sysUser.getUserName()));}
}