【发布时间】:2016-06-28 03:54:21
【问题描述】:
我是测试 spring 应用程序的新手,不知道如何测试在我的 spring boot 应用程序中定义的应用程序配置文件 application.yml。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {WebApplication.class})
@WebAppConfiguration
public class ApplicationSettingsTest {
@Test
public void applicationPicksRightTeamProfile() throws Exception {
WebApplication.main(new String[] { "--spring.profiles.active=FalconDev1" });
String output = this.outputCapture.toString();
assertThat(output, containsString("falcondev.io"));
}
@Test
public void applicationPicksRightDefaultProfile() throws Exception {
WebApplication.main(new String[0]);
String output = this.outputCapture.toString();
assertThat(output, containsString("defaultdev.io"));
}
}
我的第一个测试似乎通过了,但第二个测试失败并出现多个错误,
org.apache.catalina.LifecycleException: 无法启动组件 [连接器[org.apache.coyote.http11.Http11NioProtocol-8090]]
原因:org.apache.catalina.LifecycleException: service.getName(): “雄猫”;协议处理程序启动失败 org.apache.catalina.connector.Connector.startInternal(Connector.java:1014) ~[tomcat-embed-core-7.0.59.jar:7.0.59]
原因:java.net.BindException:地址已在使用中 sun.nio.ch.Net.bind(本机方法)~[na:1.6.0_65] org.springframework.boot.context.embedded.EmbeddedServletContainerException: 无法在以下位置启动嵌入式 Tomcat servlet 容器 org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:165) 原因:java.lang.IllegalStateException:Tomcat 连接器失败 状态在 org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:159) ~[spring-boot-1.3.2.RELEASE.jar:1.3.2.RELEASE]
编辑: application.yml
server:
port: ${port:8090}
我确实知道应用程序实际上已在端口 8090 上启动,而我第二次尝试在同一端口上再次运行,这是我不想要的。
那么如何在我的测试中告诉我只是加载应用程序上下文而不是启动真正的应用程序。任何想法都值得赞赏。
【问题讨论】:
-
WebApplication.main(new String[0])- 以下代码不会创建 Spring 上下文。你只打电话给java班级。你测试什么功能? -
好吧,我的目的是测试行为,当应用程序没有传递命令行参数时。所以我使用了新的字符串 [0]。在这种情况下,我希望使用默认配置文件。这很好。但问题是当我同时运行两个测试时。
-
为此使用
Environment。请参阅文档docs.spring.io/spring/docs/current/javadoc-api/org/…。 -
如果您想在 Spring 初始化应用程序之前设置配置文件,您可以使用以下示例 - github.com/jhipster/generator-jhipster/blob/master/generators/… 和 github.com/jhipster/generator-jhipster/blob/master/generators/…
标签: java spring spring-boot integration-testing