【发布时间】:2014-10-29 18:28:05
【问题描述】:
我正在为一个类编写一系列测试用例,其中包含以下几种方法:
public ServiceResponse getListOfGroups() {
ServiceResponse serviceResponse = new ServiceResponse();
try{
Slf4JStopWatch sw = new Slf4JStopWatch("GetListOfGroups", log, DEBUG_LEVEL);
List<Group> Groups = Arrays.asList(restTemplate.getForObject(getGroupServiceURL(), Group[].class));
sw.stop();
serviceResponse.setData(Groups);
} catch(ServiceException ex) {
serviceResponse.setErrorObject(ex.getErrorObject());
}
return serviceResponse;
}
我遇到的问题是 restTemplate 是类的实际实现中的 @autowired (因此在单元测试角度调用时返回 null )。我将如何为这些方法编写合适的测试用例?
这是我迄今为止尝试过的:
@Test
public void testGetListOfGroups() {
//TODO
ServiceResponse resp = new ServiceResponse();
Mockito.when(uwsci.getListOfGroups()).thenReturn(resp); //uwsci is my mocked object
assertTrue(uwsci.getListOfGroups() == resp);
}
我觉得这违背了单元测试的意义,因为它只是返回我告诉它的内容,而不是真正做任何其他事情。
【问题讨论】:
-
向我们展示该字段是如何自动连接的。你使用字段注入、构造函数注入还是 setter 注入?
-
@JBNizet 它使用字段注入。
@Autowired private RestTemplate restTemplate;
标签: java spring junit mockito autowired