Categories

直译:分类,分类执行的意思

Categories runner只运行那些有@Category注解或者@IncludeCategory注解的类,或者它的子类的方法。任何类或者接口都可以被作为categories.@IncludeCategory(SuperClass.class)和@Category({SubClass.class})标记的类将会被运行.

你可以可以用@ExcludeCategory注解排除一些类.

例子:

public class A{
    @Test
    public void a() {
        System.out.println("A.a");
        fail();
    }

    @Category(SlowTests.class)
    @Test
    public void b() {
        System.out.println("A.b");
    }
}
@Category({SlowTests.class, FastTests.class})
public class B {
    @Test
    public void c() {
        System.out.println("B.c");
    }
}
public interface FastTests {
}
public interface SlowTests {

}
@RunWith(Categories.class)
@Categories.IncludeCategory(SlowTests.class)
@Suite.SuiteClasses( { A.class, B.class })
public class SlowTestSuite {
}

运行结果如下:

A.b
B.c
@RunWith(Categories.class)
@Categories.IncludeCategory(SlowTests.class)
@Categories.ExcludeCategory(FastTests.class)
@Suite.SuiteClasses( { A.class, B.class })
public class SlowTestSuite2 {
}

运行结果如下:

A.b

在maven中使用categories

你可以使用maven-surefire-plugin或者maven-failsafe-plugin来配置categories的include或者exclude集合.如果不使用任何选项,所有测试将被默认执行

<build>
  <plugins>
    <plugin>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <groups>com.junit.learning.category.FastTests</groups>
      </configuration>
    </plugin>
  </plugins>
</build>

如果要排除特定的列表,则使用标签

categories的典型应用

categories用于在测试中添加元数据。 categories的用途一般如下:

  • 这些类型的测试都可能用到:单元测试,集成测试,冒烟测试,回归测试,性能测试
  • 怎样快速的执行测试: SlowTests, QuickTests
  • 自动化测试:每日部署测试
  • 测试状态: 不稳定测试,进行中测试

根据上面文字,可以理解为categories的主要用途是用给不同测试范围准备不同的元数据的

results matching ""

    No results matching ""