您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源單元測(cè)試工具 > junit
了解JUnit核心類、接口及生命周期
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/8/29 15:25:33 ] 推薦標(biāo)簽:

兩種不同參數(shù)運(yùn)行 TestCase

參數(shù) 1:

輸入:

Java代碼

    >java junit.textui.TestRunner  TestShoppingCart 

輸出:

Up
testPay!
Down
Up
testPayWithDiscount!
Down

參數(shù) 2:

輸入:

Java代碼

    > java junit.textui.TestRunner -m TestShoppingCart.testPayWithDiscount 

輸出:

Up
testPayWithDiscount!
Down

參數(shù) 1:TestCase 名字,該類的所有的以 test 開頭的 public 方法都會(huì)執(zhí)行。

參數(shù) 2:參數(shù) -m,僅僅運(yùn)行該類的該方法。

TestRunner 還提供了其他的參數(shù) -wait:(大響應(yīng)時(shí)間),-v:查看 JUnit 版本號(hào)。從輸出可以看出,參數(shù)一: testPay(),testPayWithDiscount() 都運(yùn)行;參數(shù)二:僅僅運(yùn)行參數(shù)中的 testPayWithDiscount()。對(duì)比兩個(gè)輸出結(jié)果,setUp() 在每個(gè)方法運(yùn)行前運(yùn)行一次,teardown() 在每個(gè)方法運(yùn)行后執(zhí)行一次。后面將會(huì)詳細(xì)介紹。

TestRunner 處理兩種不同的參數(shù)

TestRunner main() 方法中,生成一個(gè) TestRunner 實(shí)例,調(diào)用 start(args) 方法。在 start 方法中,JUnit 對(duì)輸入?yún)?shù)進(jìn)行處理,首先檢查 -m、-v、-wait 等參數(shù),對(duì)他們分別進(jìn)行處理。如果有 -m 參數(shù),將會(huì)根據(jù)“.”的位置,分割得到 className 和 methodName.

參數(shù)一:

首先調(diào)用 getTest(),通過 Java 反射實(shí)例化 TestSuite:

Class testClass = Class.forName(suiteClassName).asSubclass(TestCase.class);

new TestSuite(testClass)

TestSuite 構(gòu)造函數(shù)中,通過調(diào)用 Class.getDeclaredMethods(),得到這個(gè)類的所有 Public 的方法,當(dāng)然也包括構(gòu)造函數(shù),test 開頭和非 test 開頭的 public 方法。對(duì)所有方法進(jìn)行過濾,僅僅保留 public 并且以“test”開頭的方法,本例中為 testPay() 和 testPayWithDiscount()。然后分別調(diào)用 TestSuite 的 createTest() 為每個(gè)方法生成一個(gè)實(shí)例:

theClass.getConstructor(String.class).newInstance(new Object[0]);

并且都保存在 Vector<Test> fTests 中。

參數(shù)二:

與方法一不同的的是,并不通過反射獲得相應(yīng)的方法,因?yàn)閰?shù)中指定了特定的方法。直接根據(jù)輸入?yún)?shù)調(diào)用 TestSuite 的 createTest(),通過反射直接生成 TestCase 實(shí)例。

TestCase 實(shí)例的運(yùn)行

生成 TestCase 實(shí)例后,兩種參數(shù)都將調(diào)用 TestRunner 的 doRun() 方法。下面將對(duì)第二種參數(shù)進(jìn)行詳細(xì)介紹,介紹一個(gè) TestCase 實(shí)例是怎么運(yùn)行的,并且怎樣與 TestResult 和 TestListener 結(jié)合。

在 doRun() 方法中,實(shí)例化 TestResult result, 為 result 加上 Listener (new ResultPrinter()),用來監(jiān)聽 Test 運(yùn)行中的事件。然后運(yùn)行 TestResult.Run(test)。run() 方法中調(diào)用 TestCase 的 runBare()。runBare() 會(huì)把所有的異常都拋出來,result 將接受到所有的異常。runBare() 首先會(huì)運(yùn)行 setup(),接著運(yùn)行 runTest(), 后 tearDown();仡^再看前面的 output,明白了為什么 setup() 和 tearDown() 會(huì)在每個(gè)方法運(yùn)行前和后運(yùn)行,對(duì)于參數(shù)二,運(yùn)行了兩次。

上一頁(yè)1234下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd