如何仅跳过"compile"和"install"目标的测试,而不跳过"test"目标的测试?

7
我有一个情况,我们的单元测试在业务领域项目中执行时间很长,因为它会将数据库设置为已知状态,然后继续执行每个步骤。我了解到可以在命令行上使用“-Dmaven.test.skip=true”来完成此操作,但希望在NetBeans中为该项目配置此项,如果有人能够说明如何在IDE中进行配置,则全局配置也是可以接受的。
当调用“test”目标时,如何配置maven2仅执行测试?
使用以下内容将禁用测试,即使调用“test”目标(从maven文档中获取)。
<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属性来执行目标,现在您将在项目的右键菜单下看到“自定义”选项。 - Brett Ryan
5个回答

7

谢谢你,Kyle。抱歉我应该在我的IDE(NetBeans)中提到这一点。 - Brett Ryan

4

升级Netbeans 8:

  • 右键单击您的项目
  • 选择属性
  • 进入操作选项
  • 选择Maven行动
  • 添加Skip Tests属性

请参见以下图片:


4
您可以在项目属性中轻松实现此操作。 在NetBeans中,转到项目属性,在右侧列中选择“操作”。在这里,您可以为每个操作和每个配置(环境)设置属性。
要跳过测试,请添加属性 maven.test.skip=true

1

我看到你已经接受了一个答案,但是让我提供一个替代方案。

你所描述的测试类型是集成测试而不是单元测试。确实,它仍然是自动化测试,但是它依赖于外部资源,运行时间可能会更长。这就是IT的标志。

Maven被构建为单独运行集成测试,原因正如你所描述的那样。maven-failsafe-plugin 用于执行集成测试(*IT.java而不是*Test.java),该插件在integration-test 生命周期阶段中执行(而surefire钩子则在test 阶段中执行)。

最重要的是,你可以在运行较长的测试之前一直运行到packagelifecycle

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


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接