2017-07-12 145 views
1

我必須測試一些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(); 
    } 

我認爲這是因爲配置缺少測試類,但我找不到解決方法。

感謝

+1

你顯然需要模擬'DatabaseHandlerInt',這就是爲什麼你已經在你的測試主題上使用'@InjectMocks'。 – Tom

回答

相關問題