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]と同様です。