一、TestCast和TestSuite概念介紹
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工程,工程建好后會自帶一個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使用
使用說明:
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)); } }
測試結果如下:
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中去執行,其執行過程可以如圖所示: