Отсутствует EmbeddedServletContainerFactory в @SpringBootTest

Привет, я написал тест, который выглядит так

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT,classes={MyApplication.class})
@DataJpaTest
public class MyTest {

    @Autowired
    private TestRestTemplate restTemplate;

    @Autowired
    private MyService myService;
    ....

    @Test
    public void myTest(){
    ....
    }
}

Приложение выглядит так

@SpringBootApplication
@EnableJpaAuditing
@ComponentScan("de.myfirm.myservice.service")
public class  MyApplication{
....
}

В pom.xml у меня есть следующие зависимости

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jersey</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jetty</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>

Приложение представляет собой веб-сервис, который использует Джерси. Когда приложение запускается, встроенный контейнер сервлета запускается, как и ожидалось. В тесте я получаю исключение

java.lang.IllegalStateException: Failed to load ApplicationContext
....
Caused by: org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
....
Caused by: org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.

2 ответа

Я узнал, что @SpringBootTest и @DataJpaTest не работают вместе, смотрите эту проблему

https://github.com/spring-projects/spring-boot/issues/6345

Вы исключаете spring-boot-starter-tomcat в pom.xml. Чтобы запустить тест весенней загрузки со встроенным tomcat, вам понадобится эта зависимость.

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-tomcat -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <version>1.4.2.RELEASE</version>
    <scope>test</scope>
</dependency>
Другие вопросы по тегам