JUnit3 一次运行多个测试类和进行多次重复测试:使用测试套件和RepeatedTest
生活随笔
收集整理的這篇文章主要介紹了
JUnit3 一次运行多个测试类和进行多次重复测试:使用测试套件和RepeatedTest
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
測試套件
如果測試類寫到很多,每次要進行測試,難道要重新點擊每一個測試類來運行?如果有200個測試類要測試呢?
為了解決這個問題,引入了測試套件(TestSuite)。
通過將多個測試放入套件中,一并執行多個測試。
?
實例:一次運行多個測試類
比如,有兩個測試類,叫CalculatorTest和CalculatorTest2。
在測試類所在的包中新建一個類,叫做TestAll,如下:
package com.mengdd.junit;import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite;public class TestAll extends TestCase {public static Test suite(){// 創建一個測試套件TestSuite suite = new TestSuite();// 增加測試類的class對象suite.addTestSuite(CalculatorTest.class);suite.addTestSuite(CalculatorTest2.class);return suite;} }運行時,右鍵這個類,Run As ->JUnit Test:
?
就相當于運行了CalculatorTest和CalculatorTest2。
?
實例:進行方法的重復測試
如果要對某個方法進行多次測試,可以使用RepeatedTest。
使用時注意,測試類需要一個帶參數(String)的構造函數,將String參數傳給基類TestCase,調用基類的帶參數的構造函數。
于是修改之前的代碼如下:
被測試類不變:
Calculator package com.mengdd.junit;public class Calculator {public int add(int a, int b){return a + b;}public int subtract(int a, int b){return a - b;}public int multiply(int a, int b){return a * b;}public int divide(int a, int b) throws Exception{if(0 == b){throw new Exception("除數不能為0"); }return a / b;} }?
測試類:
CalculatorTest package com.mengdd.junit;import junit.framework.Assert; import junit.framework.TestCase;public class CalculatorTest extends TestCase {private Calculator calculator = null;public CalculatorTest(){super();}public CalculatorTest(String name){super(name);}@Overridepublic void setUp() throws Exception{System.out.println("set up");// 生成成員變量的實例calculator = new Calculator();System.out.println(calculator);}@Overridepublic void tearDown() throws Exception{System.out.println("tear down");}public void testAdd(){int result = calculator.add(1, 2);// 判斷方法的返回結果Assert.assertEquals(3, result);// 第一個參數是期望值,第二個參數是要驗證的值 }public void testSubtract(){int result = calculator.subtract(1, 2);// 判斷方法的返回結果Assert.assertEquals(-1, result);// 第一個參數是期望值,第二個參數是要驗證的值 }public void testMultiply(){int result = calculator.multiply(2, 3);// 判斷方法的返回結果Assert.assertEquals(6, result);// 第一個參數是期望值,第二個參數是要驗證的值 }public void testDivide(){int result = 0;try{result = calculator.divide(12, 3);}catch (Exception e){e.printStackTrace();// 如果拋出異常,證明測試失敗,沒有通過,沒通過的測試計數在Failures中 Assert.fail();// 如果不加這一行,如果程序進入到catch,無法判斷其失敗 }// 判斷方法的返回結果Assert.assertEquals(4, result);// 第一個參數是期望值,第二個參數是要驗證的值 }public void testDivideByZero(){Throwable tx = null;int result = 0;try{result = calculator.divide(12, 0);Assert.fail("沒有拋出異常,測試失敗");// 如果執行到這行代碼,則證明沒有拋出異常,說明我們的驗證失敗 }catch (Exception e){e.printStackTrace();tx = e;}Assert.assertEquals(Exception.class, tx.getClass());// 拋出的異常類型是否和期望一致Assert.assertEquals("除數不能為0", tx.getMessage());// 拋出的異常信息是否和期望一致//如果上面兩個都通過,則測試通過 }}?
測試套件類:
package com.mengdd.junit;import junit.extensions.RepeatedTest; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite;public class TestAll extends TestCase {public static Test suite(){// 創建一個測試套件TestSuite suite = new TestSuite();// 增加測試類的class對象suite.addTestSuite(CalculatorTest.class);suite.addTestSuite(CalculatorTest2.class);// 測試某個方法多次,注意測試類需要提供帶參數的構造方法suite.addTest(new RepeatedTest(new CalculatorTest("testSubtract"), 20));return suite;} }?
運行結果:
?
?
?
參考資料
圣思園張龍老師視頻教程
轉載于:https://www.cnblogs.com/mengdd/archive/2013/04/07/3006265.html
總結
以上是生活随笔為你收集整理的JUnit3 一次运行多个测试类和进行多次重复测试:使用测试套件和RepeatedTest的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工银教师信用卡优惠活动有哪些?升舱、票价
- 下一篇: WCF三种通信模式(转)