如何仅跳过“编译”和“安装”目标而不是“测试”目标的测试?

Posted

技术标签:

【中文标题】如何仅跳过“编译”和“安装”目标而不是“测试”目标的测试?【英文标题】:How do I skip tests for the "compile" and "install" target only but not the "test" target? 【发布时间】:2011-04-08 21:11:19 【问题描述】:

我有一种情况,我们的业务域项目的单元测试需要很长时间才能执行,因为它将数据库设置为已知状态,然后继续执行每个步骤。我知道这可以通过命令行上的“-Dmaven.test.skip=true”来完成,但希望仅在 NetBeans 中为项目配置它,如果有人能阐明如何在 IDE 中进行配置,全局将是可以接受的。

如何将 maven2 配置为仅在调用“测试”目标时执行测试?

即使调用“测试”目标 (from the maven docos),使用以下命令也会禁用测试。

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.6</version>
    <configuration>
      <skipTests>true</skipTests>
    </configuration>
  </plugin>
</plugins>

【问题讨论】:

我必须道歉,我现在已经找到了如何做到这一点。对于寻找此 NetBeans > 首选项 > 杂项 > Maven 的任何其他人。有一个“编辑全局自定义目标定义”按钮,这将弹出一个对话框,您可以在其中指定自定义名称、要运行的目标和执行目标的任何 -D 属性,现在您的右侧将有“自定义”-点击项目上的菜单。 【参考方案1】:

http://maven.apache.org/general.html#skip-test

当您调用目标并且不想执行测试时,只需指定 -Dmaven.test.skip=true。

【讨论】:

谢谢凯尔,对不起,我应该从我的 IDE (NetBeans) 中提到【参考方案2】:

您可以在项目属性中简单地做到这一点。 在 NetBeans 中,转到 Project Properties,在右栏中选择 Actions。在这里,您可以为每个操作和每个配置(环境)设置属性。

要跳过测试,请添加属性 ma​​ven.test.skip=true

【讨论】:

【参考方案3】:

为 Netbeans 8 更新:

右键单击您的项目 选择属性 转到操作 选择一个 Maven 操作 添加跳过测试属性

见下图:

【讨论】:

【参考方案4】:

我看到你已经接受了这个答案,但让我建议一个替代方案。

您所描述的测试类型是集成测试...而不是单元测试。诚然,它仍然是一个自动化测试,但它依赖于外部资源并且可能需要更长的时间才能运行。这是 IT 部门的专款。

出于您描述的原因,Maven 被构建为单独运行集成测试。 maven-failsafe-plugin 用于执行集成测试(*IT.java 而不是 *Test.java),并且该插件在 integration-test 生命周期阶段执行(而 surefire 挂钩 test 阶段)。

底线是您可以一直运行到 package lifecycle 而无需执行更长时间运行的测试。

请注意,install 阶段是在 integration-test 之后进行的,这是有道理的...如果您要安装新快照,则确认可能要运行您的完整测试套件,以确保一切正常。

【讨论】:

【参考方案5】:

在项目的基础上,最好的方法是默认禁用测试执行并创建一个启用它的配置文件。然后在 netbeans UI 中,打开项目属性操作面板并在测试、测试文件和调试测试操作中启用配置文件。

【讨论】:

以上是关于如何仅跳过“编译”和“安装”目标而不是“测试”目标的测试?的主要内容,如果未能解决你的问题,请参考以下文章

msdeploy仅跳过web.config root

text 鞅 - 模拟器(仅跳过)

如何跳过对包目标的所有依赖?

如何在 gitlab-ci build 中跳过前面的 maven 目标?

如何在目标 c 中对目标的项目级 API 进行单元测试?

如何在每个构建上自动执行单元测试?