美文网首页侠骨留香的专辑
mvn test 时,编码导致测试失败问题记录

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

作者: 侠骨留香 | 来源:发表于2020-07-20 14:11 被阅读0次

    近日,在 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。

    参考资料:

    1. Maven Surefire Plugin – surefire:test

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/zioekktx.html