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

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

JUnit 4 具有基于注釋的新框架,它包含了 TestNG 一些優異的特性。但這是否意味著 JUnit 4 已經淘汰了 TestNG?Andrew Glover 探討了這兩種框架各自的獨特之處,并闡述了 TestNG 獨有的三種高級測試特性。

 經過長時間積極的開發之后,JUnit 4.0 于今年年初發布了。JUnit 框架的某些有趣的更改 —— 特別是對于本專欄的讀者來說 —— 正是通過巧妙地使用注釋實現的。除外觀和風格方面的顯著改進外,新框架的特性使測試用例的編制從結構規則中解放出來。使原來僵化的 fixture 模型更為靈活,有利于采取可配置程度更高的方法。因此,JUnit 框架不再強求把每一項測試工作定義為一個名稱以 test 開始的方法,并且現在可以只運行一次 fixture,而不是每次測試都需要運行一次。

雖然這些改變令人欣慰,但 JUnit 4 并不是第一個提供基于注釋的靈活模型的 Java? 測試框架。在修改 JUnit 之前很久,TestNG 已建立為一個基于注釋的框架。

事實上,是 TestNG 在 Java 編程中率先 實現了利用注釋進行測試,這使它成為 JUnit 的有力競爭對手。然而,自從 JUnit 4 發布后,很多開發者質疑:二者之間還有什么差別嗎?在本月的專欄中,我將討論 TestNG 不同于 JUnit 4 的一些特性,并提議采用一些方法,使得這兩個框架能繼續互相補充,而不是互相競爭。

您知道嗎?

在 Ant 中運行 JUnit 4 測試比預計的要難得多。事實上,一些團隊已發現,惟一的解決方法是升級到 Ant 1.7。

 表面上的相似

JUnit 4 和 TestNG 有一些共同的重要特性。這兩個框架都讓測試工作簡單得令人吃驚(和愉快),給測試工作帶來了便利。二者也都擁有活躍的社區,為主動開發提供支持,同時生成豐富的文檔。

提高代碼質量

要找到您迫切問題的答案,請不要錯過 Andrew 的 論壇。

 兩個框架的不同在于核心設計。JUnit 一直 是一個單元測試框架,也是說,其構建目的是促進單個對象的測試,它確實能夠極其有效地完成此類任務。而 TestNG 則是用來解決更高 級別的測試問題,因此,它具有 JUnit 中所沒有的一些特性。

一個簡單的測試用例

初看起來,JUnit 4 和 TestNG 中實現的測試非常相似。為了更好地理解我的意思,請看一下清單 1 中的代碼。這是一個 JUnit 4 測試,它有一個 macro-fixture(即僅在所有測試運行前調用一次的 fixture),這個 macro-fixture 由 @BeforeClass 屬性表示:

清單 1. 一個簡單的 JUnit 4 測試用例

package test.com.acme.dona.dep;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.junit.BeforeClass;
import org.junit.Test;

public class DependencyFinderTest {
private static DependencyFinder finder;

@BeforeClass
public static void init() throws Exception {
finder = new DependencyFinder();
}

@Test
public void verifyDependencies()
throws Exception {
String targetClss =
"test.com.acme.dona.dep.DependencyFind";

Filter[] filtr = new Filter[] {
new RegexPackageFilter("java|junit|org")};

Dependency[] deps =
finder.findDependencies(targetClss, filtr);

assertNotNull("deps was null", deps);
assertEquals("should be 5 large", 5, deps.length);
}
}

JUnit 用戶會立即注意到:這個類中沒有了以前版本的 JUnit 中所要求的一些語法成分。這個類沒有 setUp() 方法,也不對 TestCase 類進行擴展,甚至也沒有哪個方法的名稱以 test 開始。這個類還利用了 Java 5 的一些特性,例如靜態導入,很明顯地,它還使用了注釋。

更多的靈活性

在清單 2 中,您可以看到同一個 測試項目。不過這次是用 TestNG 實現的。這里的代碼跟清單 1 中的測試代碼有個微妙的差別。發現了嗎?

清單 2. 一個 TestNG 測試用例

package test.com.acme.dona.dep;

import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Configuration;
import org.testng.annotations.Test;

public class DependencyFinderTest {
private DependencyFinder finder;

@BeforeClass
private void init(){
this.finder = new DependencyFinder();
}

@Test
public void verifyDependencies()
throws Exception {
String targetClss =
"test.com.acme.dona.dep.DependencyFind";

Filter[] filtr = new Filter[] {
new RegexPackageFilter("java|junit|org")};

Dependency[] deps =
finder.findDependencies(targetClss, filtr);

assertNotNull(deps, "deps was null" );
assertEquals(5, deps.length, "should be 5 large");
}
}

上一頁123下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 2021天堂在线亚洲精品专区 | 欧美一级黄色片免费看 | 中文字幕日韩国产 | 视频一区二区在线播放 | 在线免费观看黄色片 | 久久888| 在线视频精品一区 | 亚洲国产福利精品一区二区 | 久久久青草青青亚洲国产免观 | 久久综合草| 久久成人免费大片 | 国产亚洲日本人在线观看 | 中文字幕网站在线观看 | a视频免费看 | 国产久爱青草视频在线观看 | 另类小说第一草 | 免费大黄网站 | 人人人人凹人人爽人人澡 | 97av视频 | 国产在线视频欧美亚综合 | 妞干网在线免费视频 | 白洁的性荡生活全文 | 欧美视频一区在线观看 | 免费日韩视频 | 成年人免费在线观看 | 交视频在线播放 | 麻豆视传媒短视频网站-欢迎您 | 一区二区三区高清在线观看 | 亚洲国产aaa毛片无费看 | 日韩欧美视频一区二区在线观看 | 久久在草 | 日韩性大片免费 | 欧美三级第一页 | 高清中文字幕在线 | 日韩精品中文字幕一区三区 | 免费看一级黄色毛片 | 国产成人精品magnet | 爽爽影院在线免费观看 | 久久视热这只是精品222 | 欧美高清视频性播放 | 久久久久久久性高清毛片 |