1、TestCast和TestSuite概念介紹java
TestCase:字面意思,測試用例。爲一個或多個方法提供測試方法,通常是一個test。
TestSuite:測試集合,即一組測試。一個test suite是把多個相關測試納入一組的快捷方式。若是本身沒有定義,Junit會自動提供一個test suite ,包括TestCase中的全部測試。
TestRunner:測試運行器。執行test suite的程序。設計模式
TestSuite和TestCase都是繼承自Test接口,同時,TestSuite的創建和使用依賴於TestCase實例,這兒注意的是每次執行一個TestCase裏頭的方法,都會按照setUp()、runTest()、tearDown()執行順序進行方法的執行。所以,若是有涉及全局的操做能夠重寫setUp()、tearDown()在這方法裏頭操做。
TestCase繼承自Assert類,所以TestCase中能夠直接使用Assert中的相關方法,Assert類提供了幾個經常使用的判斷方法,Assert的類圖能夠參照圖:maven
2、程序實例工具
咱們新建一個maven工程,工程建好後會自帶一個junit依賴,若是沒有的話,引入junit依賴單元測試
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency>
咱們建一個Caculator.java工具類,測試使用測試
public class Calculator { public int add(int a,int b){ return a+b; } public int plus(int a,int b){ return a-b; } }
2.1 TestCase使用ui
使用說明: spa
1)訪問權限都是public; 2)返回類型都是void; 3)沒有參數; 4)方法名以「test」開頭。
編寫一下TestCaseDemo.java測試類設計
public class TestCaseDemo extends TestCase{ public void testAdd(){ Calculator ca=new Calculator(); assertEquals(14, ca.add(5, 9)); } public void testPlus(){ Calculator ca=new Calculator(); assertEquals(14,ca.plus(5, 9)); } }
測試結果以下:3d
testAdd測試經過,testPlus測試失敗,修改成assertEquals(14,ca.plus(23, 9));測試經過
2.2TestSuit使用
使用注意事項:
1)必須以「suite」方法命名; 2)suite方法的訪問修飾權限必須爲static; 3)suite方法必須爲靜態方法; 4)suite方法必須沒有參數。
用test suite測試所有的測試用例,或者是咱們想要測試的類,而不用一個一個執行,節省時間,編寫一個TestSuitDemo.java測試類
public class TestSuitDemo{ public static Test suite(){ //建立TestSuite對象 TestSuite testSuite=new TestSuite("All Test From TestCaseExample"); //爲TestSuite添加一個測試用例集合,參數爲:ClasstestClass //經過參數能夠知道,其實該參數就是TestCase的子類 testSuite.addTestSuite(TestCaseDemo.class); //建立具體的測試用例 Test test = TestSuite.createTest(TestCaseDemo.class, "testAdd"); //添加一個具體的測試用例 testSuite.addTest(test); return testSuite; } }
測試結果如圖:
經過上圖看到執行了三個實例,若是想只執行一個實例,把如下代碼註釋便可:
testSuite.addTestSuite(TestCaseDemo.class);
TestCase和TestSuite類是JUNIT中比較重要的兩個類,TestCase和TestSuite能夠認爲是JAVA的合成設計模式在單元測試中的應用,其實即使咱們沒有本身聲明和建立TestSuite的子類,並且運行的TestCase子類的過程當中也會建立TestSuite類,並將要執行的TestCase子類的實例對象添加到TestSuite中去執行,其執行過程能夠如圖所示: