JUnit – カテゴリーテスト
JUnitでは、テストケースをさまざまなカテゴリに編成し、分類されたテストケースを
@ Categories.ExcludeCategory`または
@ Categories.IncludeCategory`で実行することができます
1.カテゴリ=マーカーインタフェース
JUnitでは、カテゴリを表すマーカーインタフェースを作成する必要があります。
PerformanceTests.java
package com.mkyong.category;
//category marker interface
public interface PerformanceTests {
}
RegressionTests.java
package com.mkyong.category;
public interface RegressionTests {
}
2 @Categoryの例
テストケースを異なるカテゴリに編成する。
2.1メソッドレベルの
@ Category
。
ClassA.java
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));
}
}
クラスレベルでは `@ Category`を使用します。
ClassB.java
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複数の `@カテゴリ`の例。
ClassC.java
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カテゴリ例を含め、 `PerformanceTests`カテゴリを実行します。
PerformanceTestSuite.java
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カテゴリの例を含め、 `RegressionTestSuite`カテゴリを実行します。
RegressionTestSuite.java
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カテゴリの例を除外します。
ExcludePerformanceTestSuite.java
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()
-
注意** これはリンク://unittest/testng-groups-example/[TestNG group test]と同様です。
参考文献
カテゴリJavaDoc]。
https://github.com/junit-team/junit4/wiki/Categories
[JUnit Wiki –
カテゴリー]。
TestNGグループテスト