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