有没有办法使用surefire在测试方法级别排除测试 - 而不是类级别?

时间:2015-10-21 02:33:54

标签: maven unit-testing junit maven-surefire-plugin

Apache Maven Surefire site具有以下示例语法,用于排除运行中的测试:

<configuration>
  <excludes>
    <exclude>**/TestCircle.java</exclude>
    <exclude>**/TestSquare.java</exclude>
  </excludes>
</configuration>

这排除了类,但是如果要排除的测试是在一个带有大量其他测试的类中 - 则无论您是否只想排除一个测试,都会排除该类中的每个测试。

这看起来并不精细。我想从一个有多个测试的类中排除一个测试。

我的问题是:有没有办法使用surefire在测试方法级别排除测试 - 而不是类级别?

2 个答案:

答案 0 :(得分:0)

我认为没有选择 - 甚至不是隐藏的选项。 JUnit本身获取了应扫描以进行测试执行的文件列表。请参阅JUnitCore

surefire插件可以区分groups中的测试。另请参阅Stackoverflow上的this answer和此Blog

这可能是一种选择吗?

答案 1 :(得分:0)

  

使用JUnit&gt; = 4.8和Categories =&gt;   http://maven.apache.org/surefire/maven-surefire-plugin/examples/junit.html

1. Add : public interface SlowTests{} 

2.  public class AppTest {
      @Test
      @Category(com.mycompany.SlowTests.class)
      public void testSlow1() {
        System.out.println("testSlow1");
      }

      @Test
      @Category(com.mycompany.SlowTests.class)
      public void testSlow2() {
        System.out.println("testSlow2");
      }

      @Test 
      public void test3() {
        System.out.println("test3");
      }

        @Test 
      public void test4() {
        System.out.println("test4");
      }
    }

3.
 <plugin>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.11</version>
      <configuration>
        <groups>com.mycompany.SlowTests</groups>
      </configuration>
    </plugin>