我正在使用弹簧靴1.5.15.RELEASE
。
在我的pom.xml
中,我有:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
据我所知,默认情况下,它更喜欢tomcat嵌入式服务器(对此我很满意)。确实,当我在“生产模式”下运行应用程序时,情况似乎就是这样:
Tomcat已初始化,端口为:8080
但是,当运行这样的测试时:
@RunWith(SpringRunner.class)
@SpringBootTest(properties = "spring.profiles.active=test", webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class EmbeddedTomcatServerTest {
...test methods
}
我知道:
码头在端口63742(http / 1.1)上启动
快速mvn dependency:tree
显示:
[INFO] +-com.github.tomakehurst:wiremock:jar:2.18.0:test [INFO] | +-org.eclipse.jetty:jetty-server:jar:9.4.11.v20180605:test
我在测试中使用Wiremock,我猜想它在测试类路径中的存在正在迫使Spring Boot自动配置偏向于在测试中优先使用Jetty而不是Tomcat,并且对运行时类路径的wiremock依赖关系的缺乏又回到了雄猫
我希望我的测试和生产代码都使用tomcat-即使Jetty在类路径中,也有一种方法可以让spring支持Tomcat。
答案 0 :(得分:1)
提供您自己的EmbeddedServletContainerFactory
bean。例如,要始终使用Tomcat,请使用以下bean配置:
@Bean
public TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory() {
return new TomcatEmbeddedServletContainerFactory();
}