【问题标题】:Maven - How to compile tests without running them ?Maven - 如何在不运行测试的情况下编译测试?
【发布时间】:2011-06-13 17:02:54
【问题描述】:

在 Maven 中有没有办法在不运行测试的情况下编译测试?我想使用 IDE 来运行特定的测试,而不是全部。

【问题讨论】:

  • 您可能应该编辑问题或更改接受的答案。

标签: maven


【解决方案1】:

test-compile 生命周期阶段怎么样?它不需要任何测试跳过,因为它发生在test 阶段之前。即,

$ mvn test-compile

完成了。

Introduction to the Build Lifecycle 进一步解释。

【讨论】:

  • 这正是我所需要的,谢谢。我不知道原来的提问者;但我希望编译测试,然后使用单独的测试运行器运行它们。
  • 我来这里的次数比我承认的要多...
  • 迄今为止最好的答案,应该是公认的
  • 只是好奇,test-compile-DskipTests 有什么优势? - 根据文档-DskipTests 编译测试类,但 执行它们(或跳过测试类执行) - 所以根据It doesn't require any test skipping - 我应该假设这很昂贵吗?
  • -DskipTests 不是 Maven 生命周期目标;这只是一个设置选项。您可以使用-DskipTests 实现很多目标。 OP询问如何在不运行它们的情况下编译它们,所以这满足了。我看不出有任何理由认为跳过测试会很昂贵,但运行test 目标并使用-DskipTests 似乎毫无用处。
【解决方案2】:

只编译测试和代码而不运行它们,只需:

mvn test-compile

【讨论】:

  • 我认为 test-compile 包括 compile
  • 同意@Whimusical。此外,这将运行编译目标 2 次。
  • @GabrielPetrovay 不,它只会执行 compile 目标 1 次。 test-compile 目标在 Maven 生命周期阶段的 compile 目标之后。因此,test-compile之前的所有目标都将由maven按顺序执行。
【解决方案3】:

当执行一个包含测试阶段的目标(比如包)时,你可以做两件事:

  • 使用命令mvn -DskipTests=true package。这将编译所有 测试但不运行它们。
  • mvn -Dmaven.test.skip=true package。这不会编译或运行测试分支。

【讨论】:

    【解决方案4】:

    你可以尝试使用参数-DskipTests

    参考资料:

    【讨论】:

    • 在 netbeans 中,这就是我所做的。我看到以下 mvn -Dmaven.test.skip=true -Dnetbeans.execution=true clean install 然后我看到以下
    • [compiler:testCompile] 不编译测试源 [surefire:test] 跳过测试。至少使用 netbeans 看起来如果跳过测试它不会编译测试源
    • 没关系,即使日志上这么说,它似乎仍然可以编译测试文件。
    • 这会导致完全跳过测试:执行和编译,请参阅下面的正确答案:test-compile。我在 Eclipse 中将它与 mvn clean compile test-compile 一起使用
    • @Yashima 你说得对,这个回答不是那么聪明...请接受下面的回答,这样可以删除这个
    【解决方案5】:

    或者,您可以使用maven.test.skip.exec 选项。

    mvn -Dmaven.test.skip.exec=true
    

    Maven 将编译测试而不运行它们。 我经常在我的所有项目中使用这个选项。

    【讨论】:

    • 我正在考虑有两个管道步骤:1. 构建 2. 测试 在第 1 步中使用此选项,然后在第 2 步中使用 mvn surefire:test 似乎可以最大限度地减少正在运行的东西的重复。
    【解决方案6】:

    如果你真的想只编译测试(跳过所有其他阶段,如compile),这样就可以了

    mvn org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile
    

    请参阅plugin bindings of the default lifecycle

    【讨论】:

      【解决方案7】:

      如果你的settings.xml文件也可以使用

      <maven.test.skip>true</maven.test.skip>
      

      【讨论】:

      • 你不应该那样做。如果需要,请在命令行中设置,但不要永久设置。
      • 从来没有说过你应该或不应该这样做。只是提供选项的知识。
      • 这会导致 maven 也不编译测试。
      • @Sean Patrick Floyd:为什么不呢?这不是永久性的,那就是在 pom.xml 中设置它。
      猜你喜欢
      • 2021-11-15
      • 2023-01-09
      • 1970-01-01
      • 1970-01-01
      • 2022-10-01
      • 2010-12-09
      • 1970-01-01
      • 2012-04-06
      • 2019-09-23
      相关资源
      最近更新 更多