亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > TestNG
JUnit 4與TestNG的對比
作者:網絡轉載 發布時間:[ 2013/2/22 14:18:48 ] 推薦標簽:

顯然,這兩個清單很相似。不過,如果仔細看,您會發現 TestNG 的編碼規則比 JUnit 4 更靈活。清單 1 里,在 JUnit 中我必須把 @BeforeClass 修飾的方法聲明為 static,這又要求我把 fixture,即 finder 聲明為 static。我還必須把 init() 聲明為 public。看看清單 2,您會發現不同。這里不再需要那些規則了。我的 init() 方法既不是 static,也不是 public。

從初起,TestNG 的靈活性是其主要優勢之一,但這并非它惟一的賣點。TestNG 還提供了 JUnit 4 所不具備的其他一些特性。

依賴性測試

JUnit 框架想達到的一個目標是測試隔離。它的缺點是:人們很難確定測試用例執行的順序,而這對于任何類型的依賴性測試都非常重要。開發者們使用了多種技術來解決這個問題,例如,按字母順序指定測試用例,或是更多地依靠 fixture 來適當地解決問題。

如果測試成功,這些解決方法都沒什么問題。但是,如果測試不成功,會產生一個很麻煩的后果:所有 后續的依賴測試也會失敗。在某些情況下,這會使大型測試套件報告出許多不必要的錯誤。例如,假設有一個測試套件測試一個需要登錄的 Web 應用程序。您可以創建一個有依賴關系的方法,通過登錄到這個應用程序來創建整個測試套件,從而避免 JUnit 的隔離機制。這種解決方法不錯,但是如果登錄失敗,即使登錄該應用程序后的其他功能都正常工作,整個測試套件依然會全部失敗!

跳過,而不是標為失敗

與 JUnit 不同,TestNG 利用 Test 注釋的 dependsOnMethods 屬性來應對測試的依賴性問題。有了這個便利的特性,可以輕松指定依賴方法。例如,前面所說的登錄將在某個方法之前 運行。此外,如果依賴方法失敗,它將被跳過,而不是標記為失敗。

清單 3. 使用 TestNG 進行依賴性測試

import net.sourceforge.jwebunit.WebTester;

public class AccountHistoryTest {
private WebTester tester;

@BeforeClass
protected void init() throws Exception {
this.tester = new WebTester();
this.tester.getTestContext().
setBaseUrl("http://div.acme.com:8185/ceg/");
}

@Test
public void verifyLogIn() {
this.tester.beginAt("/");
this.tester.setFormElement("username", "admin");
this.tester.setFormElement("password", "admin");
this.tester.submit();
this.tester.assertTextPresent("Logged in as admin");
}

@Test (dependsOnMethods = {"verifyLogIn"})
public void verifyAccountInfo() {
this.tester.clickLinkWithText("History", 0);
this.tester.assertTextPresent("GTG Data Feed");
}
}

在清單 3 中定義了兩個測試:一個驗證登錄,另一個驗證賬戶信息。請注意,通過使用 Test 注釋的 dependsOnMethods = {"verifyLogIn"} 子句,verifyAccountInfo 測試指定了它依賴 verifyLogIn() 方法。

通過 TestNG 的 Eclipse 插件(例如)運行該測試時,如果 verifyLogIn 測試失敗,TestNG 將直接跳過 verifyAccountInfo 測試,請參見下圖 :

  圖 在 TestNG 中跳過的測試

對于大型測試套件,TestNG 這種不標記為失敗,而只是跳過的處理方法可以減輕很多壓力。您的團隊可以集中精力查找為什么百分之五十的測試套件被跳過,而不是去找百分之五十的測試套件失敗的原因!更有利的是,TestNG 采取了只重新運行失敗測試的機制,這使它的依賴性測試設置更為完善。

失敗和重運行

在大型測試套件中,這種重新運行失敗測試的能力顯得尤為方便。這是 TestNG 獨有的一個特性。在 JUnit 4 中,如果測試套件包括 1000 項測試,其中 3 項失敗,很可能會迫使您重新運行整個測試套件(修改錯誤以后)。不用說,這樣的工作可能會耗費幾個小時。

一旦 TestNG 中出現失敗,它會創建一個 XML 配置文件,對失敗的測試加以說明。如果利用這個文件執行 TestNG 運行程序,TestNG 只 運行失敗的測試。所以,在前面的例子里,您只需重新運行那三個失敗的測試,而不是整個測試套件。

實際上,您可以通過清單 2 中的 Web 測試的例子自己看到這點。verifyLogIn() 方法失敗時,TestNG 自動創建一個 testng-failed.xml 文件。該文件將成為如清單 4 所示的替代性測試套件:

清單 4. 失敗測試的 XML 文件
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="5" verbose="1" name="Failed suite [HistoryTesting]"
parallel="false" annotations="JDK5">
<test name="test.com.acme.ceg.AccountHistoryTest(failed)" junit="false">
<classes>
<class name="test.com.acme.ceg.AccountHistoryTest">
<methods>
<include name="verifyLogIn"/>
</methods>
</class>
</classes>
</test>
</suite>

運行小的測試套件時,這個特性似乎沒什么大不了。但是如果您的測試套件規模較大,您很快會體會到它的好處。

上一頁123下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 色人在线 | 亚洲一区精品视频在线 | 久久橹| 国产免费色视频 | 天天综合天天综合 | 色88888久久久久久影院 | 成人网18免费视频 | 波多结衣一区二区三区 | 亚洲欧美日韩国产精品影院 | 欧美日韩亚洲国产无线码 | 夜夜嗨视频网 | 手机看片高清国产日韩片 | 国产精品12 | 激情网站网址 | 久久亚洲欧美成人精品 | 国产高清不卡一区二区三区 | 免费a黄色 | 黄色大片一级 | 久久国产一级毛片一区二区 | 欧美精品日韩一区二区三区 | 小明免费视频一区二区 | 玖玖成人网 | 日韩片在线观看 | 欧美高清videos性极品 | 国卡一卡二卡三免费网站 | www.久久.com| 91桃色污 | 亚洲第二页 | 亚洲一区浅井舞香在线播放 | 好吊色免费视频 | 五月婷婷丁香综合 | 久久久国产成人精品 | 日本一区二区三区不卡在线看 | 综合 欧美 国产 视频二区 | 瑟瑟网站在线观看 | 香港三级日本三级三级人妇 | 中文字幕2019年中文字幕 | 男女视频免费 | 在线永久免费观看黄网站 | 欧美一区二区手机在线观看视频 | 美国一级做a一级爱视频 |