【问题标题】:maven skip tests with compilation errorsmaven 跳过带有编译错误的测试
【发布时间】:2012-01-05 11:36:18
【问题描述】:

是否可以选择跳过出现编译错误的测试?只是忽略它们或将它们视为失败?

【问题讨论】:

    标签: java unit-testing maven


    【解决方案1】:

    -DskipTests 通常有效。例如,mvn install -DskipTests

    如果你需要告诉 maven 严格忽略 - 使用-Dmaven.test.skip=true。这将强制所有插件和编译器忽略测试

    已编辑:看起来 -DskipTests=true 也有效!

    【讨论】:

    • 但是当我只需要跳过有编译错误的测试时,这将跳过所有测试。
    • 你在使用 JUnit 测试吗? Maven 无法选择测试并忽略它们。如果您知道哪些测试存在编译失败,请针对该特定测试使用 JUnit 注释 @Ignore。
    • 添加@Ignore注解无济于事。
    • 你的意思是它没有帮助?你试过了吗?在更高的层次上,我想知道你为什么要跳过失败的测试?你违背了测试的整个概念!相反,您应该看看他们失败的原因!
    【解决方案2】:

    不推荐...

    mvn -DskipTests=true clean compile
    

    记住,权力越大,责任越大。

    【讨论】:

    • 但是当我只需要跳过有编译错误的测试时,这将跳过所有测试。
    • 我以前没有尝试过...(现在我也想知道 :))我知道 @Ignore 在方法的顶部,但这需要更改代码。
    • 添加@Ignore注解无济于事。
    • @Ignore 将跳过特定测试...我还澄清说它需要更改代码并且在命令行上不起作用。我的陈述没有错。
    • junit @Ignore 注解如何帮助maven编译器插件跳过测试编译?
    【解决方案3】:

    maven-compiler-plugin 负责在test-compile 阶段编译您的测试。如果任何测试类无法编译,则此插件配置为使构建失败。您可以尝试使用 failOnError 配置。但我怀疑你会得到你期望的结果。编译过程在遇到编译错误时立即停止。所以可能没有问题的免费类可能没有被重新编译。因此,无法保证您在test 阶段执行的.class 文件将与相应的.java 源文件保持“最新”。

      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <executions>
          <execution>
            <id>default-testCompile</id>
            <phase>test-compile</phase>
            <goals>
              <goal>testCompile</goal>
            </goals>
            <configuration>
              <failOnError>false</failOnError>
            </configuration>
          </execution>
        </executions>
      </plugin>
    

    【讨论】:

      【解决方案4】:

      使用以下命令跳过整个测试源文件夹。由于测试类中存在编译错误,如果您使用以下命令,maven 不会考虑这些错误。

      mvn clean install -Dmaven.test.skip=true
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-12
        • 2012-11-29
        • 1970-01-01
        • 2014-09-03
        • 2021-04-30
        • 2020-12-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多