近日,在 maven 工程中,出现了奇怪的问题,项目使用junit5做单元测试,全部测试通过,但是在使用 mvn test 测试的时候却不通过了(我这里是因为编码导致的问题),经过查验资料,终于得悉问题所在。
mvn test 调用的是 maven-surefire-plugin 插件,假如不是最新版本建议使用最新的版本,亲测 junit5 的部分新特性需要新版本才能支持(比如 @Disabled),然后就是在argLine配置编码为UTF-8.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<argLine>-Dfile.encoding=UTF-8</argLine>
</configuration>
</plugin>
</plugins>
</build>
原因分析:maven-surefire-plugin 在执行测试的时候,会 fork 出新的 JVM 进行测试,而这个JVM的参数是无法通过 MAVEN_OPTS 进行设置的,所幸在 maven-surefire-plugin 中提供了 <argLine> 进行配置。
由官方文档可知, <forkNode> 是老版本中对 fork JVM 的配置,已经不建议使用了。替代它的是另外两个参数:<forkCount> 和
<reuseForks>,分别配置 fork JVM 的数量和是否重用forked JVM。
参考资料:
网友评论