とある集団のプログラムメモ

Sample Code

Category Marker Class

package org.sample.junit.category;
public class FastTests { /* category marker */ }
package org.sample.junit.category;
public class SlowTests { /* category marker */ }

Test Class

package org.sample.junit;

import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;

import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
import org.sample.junit.category.FastTests;
import org.sample.junit.category.SlowTests;

@RunWith(Enclosed.class)
public class SampleCategoryTest {

	public static class TestClass1{
		@Category(FastTests.class)
		@Test
		public void fastTest() {
			System.out.println("TestClass1.fastTest");
			int actual = 1;
			int expect = 1;
			assertThat(actual, is(expect));
		}

		@Category(SlowTests.class)
		@Test
		public void slowTest() {
			System.out.println("TestClass1.slowTest");
			int actual = 1;
			int expect = 1;
			assertThat(actual, is(expect));
		}
		@Test
		public void test() {
			System.out.println("TestClass1.test");
			int actual = 1;
			int expect = 1;
			assertThat(actual, is(expect));
		}
	}

	@Category({FastTests.class, SlowTests.class})
	public static class TestClass2{
		
		@Test
		public void test() {
			System.out.println("TestClass2.test");
			int actual = 1;
			int expect = 1;
			assertThat(actual, is(expect));
		}
	}
}

Category Suite

package org.sample.junit;

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;
import org.sample.junit.category.FastTests;
import org.sample.junit.category.SlowTests;

@RunWith(Categories.class)
//test対象を指定
@IncludeCategory(FastTests.class)
//test対象から除外
@ExcludeCategory(SlowTests.class)
//実行するテストクラスを指定
@SuiteClasses({
	/* 対象テストクラス */
	SampleCategoryTest.class,
})
public class CategoryTests {
}

Result

[Category Suite]を実行時の結果

CategoryTestsをテスト

 [FastTest]にカテゴライズされたテストのみを実施。
 ただし[SlowTest]にカテゴライズされたテスト(テストケース、テストクラス)を除外する。
 そのため、[SlowTest]していのある[TestClass2]のテストは無視される。
TestClass1.fastTest

[@IncludeCategory(FastTests.class)]をコメントアウト。([@ExcludeCategory(SlowTests.class)]のみ指定)

TestClass1.test
TestClass1.fastTest

[@ExcludeCategory(SlowTests.class)]をコメントアウト。([@IncludeCategory(FastTests.class)]のみ指定)

 [FastTest]にカテゴライズされたテストのみを実施。
 [FastTest]指定のあるテストケース[TestClass1.fastTest],テストクラス[TestClass2]が実行される
TestClass1.fastTest
TestClass2.test

[@IncludeCategory(FastTests.class)], [@ExcludeCategory(SlowTests.class)]をコメントアウト(テスト対象の指定なし)

 全てのテストケースが実行される。
TestClass1.slowTest
TestClass1.test
TestClass1.fastTest
TestClass2.test
タグ

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

×

この広告は60日間更新がないwikiに表示されております。

メンバーのみ編集できます