Пример
Есть некий класс А

package ju2;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;

public class A {
 @Category(IShow.class)
 @Test
 public void a1() {
 System.out.println("a1");
 }

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

И некий класс B

 package ju2;

import org.junit.Test;
 import org.junit.experimental.categories.Category;
 @Category({IShow.class})
 public class B {
 @Test
 public void b1() {
 System.out.println("b1");
 }
 @Test
 public void b2() {
 System.out.println("b2");
 }
 @Test
 public void b3() {
 System.out.println("b3");
 }
 }

Я хочу запустить только все методы класса B, т.е. b1,b2, b3 и метод a1 класса А

Для этого их пометил аннотацией @Category ({IShow.class})

IShow.class — это новый класс, где я буду запускать наши методы

Выглядит он так:

package ju2;
 import org.junit.experimental.categories.Categories;
 import org.junit.experimental.categories.Categories.ExcludeCategory;
 import org.junit.experimental.categories.Categories.IncludeCategory;
 import org.junit.runner.RunWith;
 import org.junit.runners.Suite.SuiteClasses;

@RunWith(Categories.class)
 @IncludeCategory(IShow.class)
 @SuiteClasses( {B.class, A.class })
 public class IShow {

}

тут достаточно легко:

@RunWith(Categories.class) — запустить тесты на выполнение в определенной категории

@IncludeCategory(IShow.class) — показываем, какие именно категории нужно запускать, т.е. категории помеченные IShow.class

@SuiteClasses( {B.class, A.class }) — какие классы мы используем, т.е. класс A и B

Запускаем на выполнение

Вывод:

b1
b2
b3
a1
Т.е. сначала выполнились все методы класса B, т.к. класс B был помечен @Category({IShow.class}), а потом выполнился метод a1() класса А.

Реклама