我们在Spring Boot项目中进行了JUnit 5测试,测试了创建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 = []