У нас есть тест JUnit 5 в проекте Spring Boot, проверяющий ответ от контроллера, который создает вывод Protobuf.Если я выполняю набор тестов из среды IDE (в команде используются как Eclipse, так и IntelliJ) в качестве тестов JUnit, все проходят успешно.Если я запускаю mvn test
из терминала, они также проходят.НО, если выполнить mvn package
, этот тест не пройден.
Я не могу понять, в чем здесь разница, фаза теста должна быть одинаковой в test
и package
?Это как-то связано с тем, как мы зависим от Юпитера?
Если тест не пройден, он получит ответ 406 вместо ожидаемого 200. Это то же поведение, что и когда ProtobufHttpMessageConverter
не зарегистрированв контексте.Это озадачивает меня, хотя тест отлично работает на этапе тестирования, так почему бы и нет, когда пакет выполняется?
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.2.0</version>
</dependency>
</dependencies>
</plugin>
...
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>1.2.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.2.0</version>
<scope>test</scope>
</dependency>
</dependencies>
Это вывод, когда тест не пройден:
Async:
Async started = false
Async result = null
Resolved Exception:
Type = org.springframework.web.HttpMediaTypeNotAcceptableException
ModelAndView:
View name = null
View = null
Model = null
FlashMap:
Attributes = null
MockHttpServletResponse:
Status = 406
Error message = null
Headers = {}
Content type = null
Body =
Forwarded URL = null
Redirected URL = null
Cookies = []