我正在尝试通过调用如下所示的控制器类方法来使用普通junit进行junit测试,当我这样做时,用于对象创建的@Autowired批注将使我返回null而不是创建对象。

例:

JunitClass:

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestingJunit {
    @Test
    public void testing() {
           APIController repo = new APIController();
           ResponseEntity<?> prod = repo.getNames(8646, 1);
           List<TestVO> ff = (List<TestVO>) prod.getBody();
           Assert.assertEquals("AA", ff.get(0).getName());
    }
}


控制器:

@Autowired
private ServiceClass serviceClass;

 public ResponseEntity<?> getNames(@PathVariable("aa") int aa, @RequestHeader(value = "version") int version){

serviceClass.callSomeMethod(); // **here i am getting null for serviceClass object**

}

最佳答案

这是因为您通过执行APIController repo = new APIController();手动实例化了控制器。这样做,Spring不会注入您的服务,因为您显式地控制了bean(及其依赖项)。

尝试将控制器注入测试中。

09-09 21:57