junit4 組合測試

  有時,咱們可能須要將幾個測試類組合在一塊兒執行,或將幾個測試類的某幾個測試方法組合在一塊兒執行。固然在實際的應用中仍是用的比較少,咱們能夠很方便的使用maven來跑測試用例;這裏純屬技術探討。java

測試類ATest.javamaven

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

public class ATest {
	
	@Test
	@Category(FastTest.class) // @Category 放在測試方法上
	public void atest1() {
		System.out.println("atest1");
	}
	
	@Test
	@Category(SlowTest.class)
	public void atest2() {
		System.out.println("atest2");
	}
}

測試類BTest.java測試

// @Category 放在測試類上
@Category(FastTest.class)
public class BTest {

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

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

	@Test
	@Category(SlowTest.class)
	public void btest3() {
		System.out.println("btest3");
	}
}


兩個用於Categories標記分組做用的接口,固然也能夠是類,這些接口僅僅用於標記分組:FastTest.java、SlowTest.javaui

public interface FastTest {

}
public interface SlowTest {

}

以上是準備工做:spa

一、Suite組合測試類。code

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

@RunWith(Suite.class)
// 這裏將按順序執行,A測試類先執行,B測試類後執行。固然測試類中方法的執行是無序的。
@SuiteClasses({ ATest.class, BTest.class })
public class SuiteTests {

}

執行SuiteTests將運行A、B的5個測試方法。輸出以下:接口

atest1
atest2
btest1
btest2
btest3

二、Categories組合測試類或測試方法。it

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

@RunWith(Categories.class)
@IncludeCategory(FastTest.class)
@SuiteClasses({ ATest.class, BTest.class })
public class Categories1Tests {

}

以上的代碼將會執行@Category(FastTest.class)標記的類或測試方法,因此會執行ATest的測試方法atest1(),以及BTest的全部測試方法。輸出以下:ast

atest1
btest1
btest2
btest3

還能夠使用@ExcludeCategory排除某些標記方法,代碼以下class

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(FastTest.class)
@ExcludeCategory(SlowTest.class)
@SuiteClasses({ ATest.class, BTest.class })
public class Categories2Tests {

}

這樣BTest中的btest3()測試方法將會排除掉,執行結果以下:

atest1
btest1
btest2
相關文章
相關標籤/搜索