Я использую весеннюю загрузку 1.5.15.RELEASE.
В моем pom.xml есть:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Что, как я понимаю, по умолчанию отдает предпочтение встроенному серверу tomcat (которым я доволен). На самом деле это похоже на тот случай, когда я запускаю приложение в "производственном режиме", я вижу:
Tomcat initialized with port(s): 8080
Однако при выполнении таких тестов:
@RunWith(SpringRunner.class)
@SpringBootTest(properties = "spring.profiles.active=test", webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class EmbeddedTomcatServerTest {
...test methods
}
Понимаю:
Jetty started on port(s) 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 в тестах, я предполагаю, что его присутствие на пути к тестовым классам заставляет автоматическую конфигурацию весенней загрузки в тестах отдавать предпочтение Jetty вместо Tomcat, а отсутствие зависимости wiremock от пути к классам во время выполнения возвращается к Tomcat.
Я бы хотел, чтобы и мои тесты, и производственный код использовали tomcat - есть ли способ попросить Spring отдать предпочтение Tomcat, даже если Jetty находится в пути к классам.




Предоставьте свой собственный bean-компонент EmbeddedServletContainerFactory. Например, чтобы всегда использовать Tomcat, используйте следующую конфигурацию bean-компонента:
@Bean
public TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory() {
return new TomcatEmbeddedServletContainerFactory();
}