Java Spring boot集成测试web配置
正在尝试为httpClient实现集成测试。 HttpClient可以使用存根rest控制器服务为“其他web”发送数据 配置为:Java Spring boot集成测试web配置,java,spring,testing,spring-boot,configuration,Java,Spring,Testing,Spring Boot,Configuration,正在尝试为httpClient实现集成测试。 HttpClient可以使用存根rest控制器服务为“其他web”发送数据 配置为: @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = { SpringMvcApplicationConfiguration.class , StorageConfiguration.class , … }) @WebIntegra
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {
SpringMvcApplicationConfiguration.class
, StorageConfiguration.class
, …
})
@WebIntegrationTest({"server.port=8080", "management.port=0"})
@Transactional
public class HttpSendHelperTest {
private final static Logger LOGGER = LoggerFactory.getLogger(HttpSendHelperTest.class);
@Inject
private HttpSendHelper httpSendHelper;
@Inject
private RequestMappingHandlerMapping mapping;
…
}
测试正确开始加载我所有配置的竞赛。
正在检查映射。getHandlerMethods()-映射中存在的所有URI
正在向默认url发送测试请求-响应状态为200,
但是发送给其他人(尝试从映射的URI中发送一些)-响应状态为404
RestTemplate restTemplate = new TestRestTemplate();
restTemplate.postForEntity("http://localhost:8080/",
StubBuilder.getInspection(), String.class)
responseEntity = restTemplate.postForEntity("http://localhost:8080/stub/send",
StubBuilder.getInspection(), String.class);
请建议如何解决问题。解决方案
它需要以正确的方式配置springBoot
@RunWith(SpringJUnit4ClassRunner.class)
@WebIntegrationTest({"server.port=8080", "management.port=0"})
@Transactional
@SpringApplicationConfiguration(classes = SpringBootApplicationForTest.class)
public class HttpSendHelperTest {
添加SpringBootApplicationForTest.class
@EnableConfigurationProperties(value =
{
StorageConfiguration.class
}
)
@EnableAutoConfiguration(exclude = {
DataSourceAutoConfiguration.class
, VelocityAutoConfiguration.class
})
@EntityScan(basePackages = {
"my.entities.path"
})
@SpringBootApplication
public class SpringBootApplicationForTest {
public static void main(String[] args) {
SpringApplication.run(SpringBootApplicationForTest.class, args);
}
}
非常感谢Petri Kainulainen(有用的建议)。更多细节。爪哇7。基于Maven的构建。基于spring@Configuration的web应用程序。它没有web.xml,它不是基于Spring引导的。使用实现WebApplicationInitializer的类配置的Web容器。如果war部署到目标web容器,应用程序将启动。集成测试需要嵌入式服务器。嵌入式服务器的配置和前面描述的一样,但它不使用由spring创建的RequestMappingHandlerMapping对象,所以TestRestTemplate不能使用Rest服务。但我在考试中需要rest服务。