是否可以忽略某些单元测试?

Jam*_*eld 10 java junit maven-2 unit-testing annotations

我目前正在开发一个在所有模块中广泛使用JUnit4的项目.我们使用Maven2来构建项目,使用Hudson进行持续集成.该项目是在Java 1.5下构建和运行的.

我们最近添加了大量的单元测试,这些测试有时需要,但不希望在构建过程中运行(但同一项目中的其他单元测试).

我想知道是否有某种注释可以应用于测试,或者某些可以对Maven进行的配置会忽略生成在某个包或某个测试类中的单元测试?

可能只是将这些特定测试放在一个可以通过main运行的普通类中,但这并不理想.

谢谢你的建议

cet*_*nar 17

您可以配置maven-surefire-plugin.

例如:

<project>
<build>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.4.2</version>
    <configuration>
      <excludes>
        <exclude>**/TestCircle.java</exclude>
        <exclude>**/TestSquare.java</exclude>
      </excludes>
    </configuration>
  </plugin>
</plugins>
Run Code Online (Sandbox Code Playgroud)

编辑:
另一个解决方案是定义配置文件,其中所有测试将运行,例如由哈德森.在开发模式中,您可以使用所有测试的子集来加速开发(或者所有测试可能都在默认配置文件中,在dev配置文件中选择测试 - 因此您需要使用-PprofileName属性运行maven ).这个例子更适合需要运行loger的集成测试.


use*_*421 8

有一个"忽略"注释,但添加它们是手动工作,不确定是否有帮助.
它可以用于测试方法或整个类

@Ignore("not ready yet") @Test public void testSomething() {...
Run Code Online (Sandbox Code Playgroud)

要么

@Ignore public class SomeTest {
    @Test public void testSomething() {...
}
Run Code Online (Sandbox Code Playgroud)

[]]