我正在尝试通过调用如下所示的控制器类方法来使用普通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(及其依赖项)。
尝试将控制器注入测试中。