在測試過程中,有時可能想一次性運(yùn)行所有的測試類,或是選擇性的運(yùn)行某些測試類。這樣的話我們可以用TestSuite來統(tǒng)一管理我們的測試類。
比如說我現(xiàn)在有三個測試類: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,可能會疑惑,平時沒有定義suite的時候,單個測試類里面的用例是怎么運(yùn)行起來的呢。其實(shí)是如果你沒有定義suite,那么測試運(yùn)行器會自動創(chuàng)建一個suite。
這個默認(rèn)的suite會掃描你的測試類,找到所有以@Test標(biāo)記的方法。默認(rèn)的suite會在內(nèi)部為每個@Test方法新建一個測試類的實(shí)例,然后junit會獨(dú)立的運(yùn)行每個@Test方法。
suite對象其實(shí)是一個runner,可以執(zhí)行一個測試類中所有被@Test注釋的方法。
比如某個測試類:
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");
}
}