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

时间:2010-09-06 18:12:08

标签: java unit-testing maven-2 netbeans

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

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

即使调用“test”目标(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>

5 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:4)

您只需在项目属性中执行此操作即可。 在NetBeans中,转到“项目属性”,在右栏中选择“操作”。在这里,您可以为每个操作和每个配置(环境)设置properirt。

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

答案 2 :(得分:3)

更新Netbeans 8:

  • 右键点击您的项目
  • 选择属性
  • 转到操作
  • 选择Maven操作
  • 添加“跳过测试”属性

见下图:

答案 3 :(得分:1)

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

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

Maven可以根据您描述的原因单独运行集成测试。 maven-failsafe-plugin用于执行集成测试(* IT.java而不是* Test.java),该插件在集成测试生命周期阶段执行(而surefire挂钩测试阶段。

最重要的是,您可以一直运行到 lifecycle,而无需执行更长时间运行的测试。

请注意,安装阶段在集成测试之后,这是有意义的...如果您正在安装新快照,则验证可能要运行完整的测试套件,确保一切正常。

答案 4 :(得分:0)

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