我的Junit测试无法在Windows上使用“mvn clean install”进行编译

时间:2017-07-09 04:53:48

标签: java eclipse maven unit-testing junit

我的相关pom部分如下:

 <!-- https://mvnrepository.com/artifact/junit/junit -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.12</version>
                <configuration>
                    <forkMode>always</forkMode>
                </configuration>
            </plugin>
        </plugins>
    </build>

我有一个maven项目,当我在Eclipse中通过单击“src / test / java” - &gt;执行它们时,我可以成功运行所有单元测试“run as” - &gt; “Junit测试”。但是,当我在Windows 10上的命令行使用“mvn clean install”运行它们时,大多数单元测试都会失败。

奇怪的是,同样的项目我可以在我的Ubuntu机器上的命令行中使用“mvn clean install”运行所有单元测试。

使用“mvn clean install”在Windows机器上导致此问题的独特之处是什么?

编辑: 我找到了问题的根源,但无法理解为什么?

通过加载文本文件初始化类时测试失败,并且在文件的此特定条目处失败:

♥|+|love

加载文件时,每行都会被以下代码解析和验证:

String[] entry = line.split("\\|");
if (entry.length != 3) {
   log.error(String.format("Invalid line: %s in %s " + line, filePath));
}

然后'entry'应该由3个元素组成:{“♥”,“+”,“love”}。这表示在Eclipse Windows或Ubuntu机器上运行时解析是正确的,但在Windows上的命令行中运行时失败。

现在的问题是,为什么在解析或断言这个条件时会失败?我怀疑这是由于编码。可能是这样的情况,当在Windows上的终端上运行时,心脏符号可能会遇到编码问题,但是,在我的pom.xml中,我有这一行:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

所以我很困惑为什么会这样。好消息是我现在发现了问题所在。

0 个答案:

没有答案