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