mvn test 时,编码导致测试失败问题记录

近日,在 maven 工程中,出现了奇怪的问题,项目使用junit5做单元测试,全部测试通过,但是在使用 mvn test 测试的时候却不通过了(我这里是因为编码导致的问题),经过查验资料,终于得悉问题所在。

mvn test 调用的是 maven-surefire-plugin 插件,假如不是最新版本建议使用最新的版本,亲测 junit5 的部分新特性需要新版本才能支持(比如 @Disabled),然后就是在argLine配置编码为UTF-8.


    
        
            org.apache.maven.plugins
            maven-surefire-plugin
            3.0.0-M5
            
                -Dfile.encoding=UTF-8
            
        
    

原因分析:maven-surefire-plugin 在执行测试的时候,会 fork 出新的 JVM 进行测试,而这个JVM的参数是无法通过 MAVEN_OPTS 进行设置的,所幸在 maven-surefire-plugin 中提供了 进行配置。

由官方文档可知, 是老版本中对 fork JVM 的配置,已经不建议使用了。替代它的是另外两个参数:
,分别配置 fork JVM 的数量和是否重用forked JVM。

参考资料:

  1. Maven Surefire Plugin – surefire:test

你可能感兴趣的:(mvn test 时,编码导致测试失败问题记录)