【发布时间】:2021-09-17 21:19:53
【问题描述】:
单元测试
RestTemplate restTemplate =restTemplateBuilder.setConnectTimeout(Duration.ofSeconds(connectTimeout)).setReadTimeout(Duration.ofSeconds(readTimeout))
抛出空指针异常。
我嘲笑过 RestTemplateBuilder, RestTemplate 无法理解是哪个字段导致了 NPE
下面是示例代码:
@Service
public class MySeriveClass{
@Autowired
RestTemplateBuilder restTemplateBuilder;
private int connectTimeout=10;
private int readTimeout = 10;
public boolean restTemplate_check()
{
RestTemplate restTemplate = restTemplateBuilder.setConnectTimeout(Duration.ofSeconds(connectTimeout))
.setReadTimeout(Duration.ofSeconds(readTimeout))
.build();
//more code
return true;
}
}
//class end
单元测试代码:
public class MySeriveClass_Test {
@InjectMocks
MySeriveClass mySeriveClass;
@Test
public void restTemplate_check_test()
{
RestTemplateBuilder restTemplateBuilder = mock(RestTemplateBuilder.class);
RestTemplate restTemplate = mock(RestTemplate.class);
//bellow line throws null pointer exception
org.mockito.BDDMockito.given(restTemplateBuilder.setConnectTimeout(Duration.ofSeconds(10))
.setReadTimeout(Duration.ofSeconds(10)).build()).willReturn(restTemplate);
org.mockito.BDDMockito.given( mySeriveClass.restTemplate_check()).willReturn(true);
org.junit.Assert.assertEquals(true, mySeriveClass.restTemplate_check());
}
}//test class ends
【问题讨论】:
-
你能添加堆栈跟踪吗?你的 resttemplatebuilder 是在哪里定义的?你能告诉我它是如何变得狂热的吗?
-
@ParthManaktala RestTemplateBuilder 在服务类中自动装配。
标签: junit mockito spring-boot-test