【发布时间】:2020-06-08 08:12:40
【问题描述】:
我已在@Configuration 类中配置了必要的 Bean,但无法将 RestTemplate 注入我的测试类进行测试。
@Configuration
public class AppConfig {
@Bean
public ProtobufHttpMessageConverter protobufHttpMessageConverter() {
return new ProtobufHttpMessageConverter();
}
@Bean
public RestTemplate restTemplate(ProtobufHttpMessageConverter converter) {
RestTemplate http2Template = new RestTemplate(new OkHttp3ClientHttpRequestFactory());
List<HttpMessageConverter<?>> converters = http2Template.getMessageConverters();
converters.add(converter);
http2Template.setMessageConverters(converters);
return http2Template;
}
}
测试类:
@ExtendWith(SpringExtension.class)
@AutoConfigureWebClient(registerRestTemplate = true)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT, classes = {RestTemplate.class, ProtobufHttpMessageConverter.class})
@ActiveProfiles("dev")
public class GRPCRestApiTest {
@Autowired
private RestTemplate restTemplate;
@Test
public void GetOneCourseUsingRestTemplate() throws IOException {
assertNotNull(restTemplate, "autowired restTemplate is NULL!");
ResponseEntity<Course> course = restTemplate.getForEntity(COURSE_URL, Course.class);
assertResponse(course.toString());
HttpHeaders headers = course.getHeaders();
}
}
感谢任何建议和见解
【问题讨论】:
-
@ActiveProfiles("dev")似乎有问题,“dev”配置文件是否处于活动状态? -
删除
@ExtendWith,已经隐含在@SpringBootTest中,并从@SpringBootTest类中删除classes。此外,模板不应该是null,而是你的测试应该爆炸。 -
是的,“dev”是 pom.xml 中定义的默认活动配置文件。添加
-Pdev没有帮助。 -
尝试了@M.Deinum 的建议,但不起作用。
标签: spring-boot autowired junit5 spring-boot-test spring-resttemplate