在測試過程中,有時(shí)可能想一次性運(yùn)行所有的測試類,或是選擇性的運(yùn)行某些測試類。這樣的話我們可以用TestSuite來統(tǒng)一管理我們的測試類。
比如說我現(xiàn)在有三個(gè)測試類:junitTest4,TestCase2和TryTest
但是現(xiàn)在我不想運(yùn)行全部的測試類,只想運(yùn)行其中的junitTest4和TestCase2。這樣可以用junit test suite來管理。
代碼如下:
@RUNWith:指定運(yùn)行器
@SuiteClasses :指定要運(yùn)行的測試類
運(yùn)行結(jié)果:
由此可見,通過junit test suite我們可以共同管理不同的測試類,可以指定一次性只執(zhí)行我們想要執(zhí)行的測試類。
TestSuite還可以不斷地嵌套其他的Testsuite,方便了對于不斷增加的TestCase的管理和維護(hù)。這種體系架構(gòu),非常類似于現(xiàn)實(shí)中程序一步步開發(fā)一步步集成的現(xiàn)況。
說到suite,可能會(huì)疑惑,平時(shí)沒有定義suite的時(shí)候,單個(gè)測試類里面的用例是怎么運(yùn)行起來的呢。其實(shí)是如果你沒有定義suite,那么測試運(yùn)行器會(huì)自動(dòng)創(chuàng)建一個(gè)suite。
這個(gè)默認(rèn)的suite會(huì)掃描你的測試類,找到所有以@Test標(biāo)記的方法。默認(rèn)的suite會(huì)在內(nèi)部為每個(gè)@Test方法新建一個(gè)測試類的實(shí)例,然后junit會(huì)獨(dú)立的運(yùn)行每個(gè)@Test方法。
suite對象其實(shí)是一個(gè)runner,可以執(zhí)行一個(gè)測試類中所有被@Test注釋的方法。
比如某個(gè)測試類:
public class TryTest{
@Test
public void test1(){
System.out.println("demo");
}
}
其實(shí)默認(rèn)的suite是這樣的:
public class TryTest{
@RUNWith(Suite.Class)
@SuiteClasses(TryTest.class)
public void test1(){
System.out.println("demo");
}
}