Han*_*tsy 5 end-to-end spring-test spring-integration spring-boot
目前在我们的项目中,我们使用Spring Integration来集成许多服务和一些与协议相关的端点.
该项目是一个多Spring Boot应用程序,将在生产中部署多个可执行jar.
问题是:
如何运行需要跨这些应用程序运行的端到端测试,我必须手动逐个运行?在非-Spring-Boot应用程序之前,我可以使用Maven tomcat7插件来完成这项工作(将战争部署到嵌入式tomcat并在预集成测试阶段运行),现在如何在运行之前启动所有相关应用程序我的考试.假设我现在不使用Docker/Vagrant.
在stackoverflow上发现了类似的问题,Maven下的多个Spring启动应用程序的端到端集成测试
如何自动运行end2end测试?
在Spring Integration测试中,有时我必须模拟一个http端点,所以我写了一个简单Controller的测试包来存档这个目的,但我想在不同的端口运行它,这使它更像一个外部资源.@SpringBootApplicaiton为此目的,如何在测试中同时在不同的端口运行不同的类?
我使用的是最新的Maven,Java 8,Spring Boot 1.3.1.RELEASE.
实际上,Spring Boot 附带了embeddedServlet 容器支持。Tomcat就是其中之一。默认为打开org.springframework.boot:spring-boot-starter-web。
有了org.springframework.boot:spring-boot-starter-test和its @SpringApplicationConfiguration,@WebIntegrationTest你就可以达到你的要求,即使是随机的port。
请参阅 Spring Boot参考手册以获取更多信息:
要更改端口,您可以将环境属性作为冒号或等号分隔的名称/值对添加到@WebIntegrationTest,例如@WebIntegrationTest("server.port:9000")。此外,您可以将 server.port 和 management.port 属性设置为 0,以便使用随机端口运行集成测试。
这样,您@SpringBootApplicaiton将被部署到嵌入式 Tomcat,并且您的测试可以访问运行的服务/控制器。
注意:您的 Spring Boot 应用程序是否具有 Spring Integration 功能并不重要。行为是相同的:嵌入式 Servlet 容器和针对@Value("${local.server.port}").
| 归档时间: |
|
| 查看次数: |
901 次 |
| 最近记录: |