Автор оригинала: mkyong.
В JUnit вы можете организовать тестовые случаи по разным категориям и запускать эти категоризированные тестовые случаи с помощью @Categories. Исключить категорию
или @Категории. Включить Категорию
1. Интерфейс
В JUnit вам необходимо создать интерфейсы маркеров для представления категорий:
package com.mkyong.category; //category marker interface public interface PerformanceTests { }
package com.mkyong.category; public interface RegressionTests { }
2. @Примеры категорий
Организация тестовых случаев по разным категориям.
2.1 @Категория
на уровне метода.
package com.mkyong.category; import org.junit.Test; import org.junit.experimental.categories.Category; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; public class ClassA { @Category(PerformanceTests.class) @Test public void test_a_1() { assertThat(1 == 1, is(true)); } @Test public void test_a_2() { assertThat(1 == 1, is(true)); } }
2.2 @Категория
на уровне класса.
package com.mkyong.category; import org.junit.Test; import org.junit.experimental.categories.Category; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; @Category({PerformanceTests.class, RegressionTests.class}) public class ClassB { @Test public void test_b_1() { assertThat(1 == 1, is(true)); } }
2.3 Несколько @категория
примеров.
package com.mkyong.category; import org.junit.Test; import org.junit.experimental.categories.Category; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; public class ClassC { @Category({PerformanceTests.class, RegressionTests.class}) @Test public void test_c_1() { assertThat(1 == 1, is(true)); } @Category(RegressionTests.class) @Test public void test_c_2() { assertThat(1 == 1, is(true)); } }
3. Тест набора
Примеры для выполнения категоризированных тестовых случаев.
3.1 Включите пример категории, запустите Тесты производительности
категория.
package com.mkyong.category; import org.junit.experimental.categories.Categories; import org.junit.runner.RunWith; import org.junit.runners.Suite; @RunWith(Categories.class) @Categories.IncludeCategory(PerformanceTests.class) //Include multiple categories //@Categories.IncludeCategory({PerformanceTests.class, RegressionTests.class}) @Suite.SuiteClasses({ClassA.class, ClassB.class, ClassC.class}) public class PerformanceTestSuite { }
Выход
ClassA.test_a_1() ClassB.test_b_1() ClassC.test_c_1()
3.2 Включите пример категории, запустите Набор тестов регрессии
категория.
package com.mkyong.category; import org.junit.experimental.categories.Categories; import org.junit.runner.RunWith; import org.junit.runners.Suite; @RunWith(Categories.class) @Categories.IncludeCategory(RegressionTests.class) @Suite.SuiteClasses({ClassA.class, ClassB.class, ClassC.class}) public class RegressionTestSuite { }
Выход
ClassB.test_b_1() ClassC.test_c_1() ClassC.test_c_2()
3.3 Исключить пример категории.
package com.mkyong.category; import org.junit.experimental.categories.Categories; import org.junit.runner.RunWith; import org.junit.runners.Suite; @RunWith(Categories.class) @Categories.ExcludeCategory(PerformanceTests.class) @Suite.SuiteClasses({ClassA.class, ClassB.class, ClassC.class}) public class ExcludePerformanceTestSuite { }
Выход
ClassA.test_a_2() ClassC.test_c_2()
Рекомендации
Оригинал: “https://mkyong.com/unittest/junit-categories-test/”