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

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

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

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

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

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

您知道嗎?

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

 表面上的相似

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

提高代碼質(zhì)量

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

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

一個簡單的測試用例

初看起來,JUnit 4 和 TestNG 中實現(xiàn)的測試非常相似。為了更好地理解我的意思,請看一下清單 1 中的代碼。這是一個 JUnit 4 測試,它有一個 macro-fixture(即僅在所有測試運行前調(diào)用一次的 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 的一些特性,例如靜態(tài)導(dǎo)入,很明顯地,它還使用了注釋。

更多的靈活性

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

清單 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下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 欧美成人一级片 | 日韩一区二区三区四区区区 | 日韩大片免费看 | 一本高清在线视频 | 97福利视频导航欧美一区 | 日韩视频二区 | 欧美成人免费观看久久 | 日韩中文字幕精品 | 一级视频免费观看 | 久久v| 激情综合六月 | 国产精品毛片一区二区三区 | 天天干天天狠 | 五月天激情丁香 | 日b视频免费看 | 激情五月视频 | 亚洲成a人不卡在线观看 | 老司机午夜精品视频播放 | 国产v欧美v日本v精品 | 日本国内一区二区三区 | 一道本在线视频 | 一级毛片成人免费看免费不卡 | 精品一区二区三区中文字幕 | 欧美性最xxx | 色婷婷99综合久久久精品 | 国产九九视频在线观看 | 宠文肉细致高h一对一 | 国产伦一区二区三区高清 | 亚洲第一福利网站 | 九九九日产 | 欧美日韩国产一区二区三区播放 | 亚欧在线视频 | 日本福利片午夜免费观着 | 最近最新中文字幕高清免费 | 国产东北男同志videos网站 | 欧美大片国产在线永久播放 | 欧美一区永久视频免费观看 | 欧美日韩大尺码免费专区 | 免费观看黄色片 | 特黄特a级特别特级特毛片 特黄特黄aaaa级毛片免费看 | 久久久亚洲国产精品主播 |