我必須測試一些Spring控制器。我使用mockito。但是,當我測試特定的路由時,控制器中的鏈接函數不能使用依賴性(NullPointerException),因爲Autowired註釋不起作用。Spring Test和NullPointerException
下面我的代碼:
測試類:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class ClassTest {
@InjectMocks
private abcController abc;
private MockMvc mockMvc;
@Before
public void setup() throws IOException {
MockitoAnnotations.initMocks(this);
this.mockMvc = MockMvcBuilders.standaloneSetup(abc).build();
}
@Test
public void test1() throws Exception {
this.mockMvc.perform(get("/api/abc/"))
.andExpect(status().isOk())
.andExpect(jsonPath("$[0]", is("a")))
.andExpect(jsonPath("$[1]", is("b")));
}
控制器(在這裏發生的空指針異常數據庫處理器爲null):
@RestController
@ComponentScan("com.example.*")
@Repository(value="abcController")
public class abcController extends BaseController {
@Autowired
@Qualifier("DatabaseHandler")
DatabaseHandlerInt databaseHandler;
@RequestMapping(value = "/api/abc", method = RequestMethod.GET)
public @ResponseBody ArrayList getContent() throws Exception {
// Null pointer happend here
return databaseHandler.example();
}
我認爲這是因爲配置缺少測試類,但我找不到解決方法。
感謝
你顯然需要模擬'DatabaseHandlerInt',這就是爲什麼你已經在你的測試主題上使用'@InjectMocks'。 – Tom