1. 程式人生 > >怎樣選擇Java測試框架 JUnit還是TestNG?

怎樣選擇Java測試框架 JUnit還是TestNG?

Martin Fowler曾說過,軟體開發領域中此前從沒有過這樣的事情:很少幾行程式碼對大量的程式碼起了如此重要的作用。JUnit過去直到如今依然是單元測試的一個標準,是最流行的開源工具。當然現在我們有許多有別於JUnit的其他的開源工具。我自己,除了使用JUnit外,還用TestNG

自動測試成為你Java專案中的一部分了嗎?你最愛的測試框架是什麼哪?使用的又是哪一種標準?

本文的4名開發者將和你一起分享他們在自動測試領域中的觀點和經驗。當你的專案面臨測試階段的時候,希望這些觀點能對你有所幫助。如果你也想要分享自己的觀點,請回帖參與討論。我們真摯的希望我們能夠為這個領域中新手提供一些有用建議和標準。

文章最後列出了文章的作者和提到的測試框架。

論自動測試——Tom Wheeler

當我給那些有經驗的開發者上課時,我發現只有40%左右的人寫測試。大約還有40%的人甚至從來沒聽說過JUnit,這其中更有一般人完全沒有單元測試的概念。開發者通常處於在專案經理制定的緊促計劃的壓力中——而那些專案經理同樣處於客戶的壓力之下,客戶希望他們的軟體能夠被快速的開發出。不幸的是,測試是專案中的一個重要部分而很多人卻輕易的將它砍掉。真是目光短淺,那種做法只會讓你的應用成為bug的樂園而且會大大超出你的計劃時間。

為什麼會這樣?因為寫自動測試實際上省下了大量的執行時間。每個開發者都會出錯而通過測試可以幫助找到這些錯誤。可能手工測試在某些方面要比自動測試更快一些,但是手工測試需要使用者介面。手工測試的結果並不一致,因為測試者和開發者一樣都會犯錯。而一個自動測試總會保持結果的一致性。

也許更重要的是,當一箇舊bug被修復或者新特性被新增時會引入更多的bug。你需要在改變系統後重新執行所有的測試。這也是自動測試的價值體現,因為對比手工測試的開銷,自動測試的開銷是微不足道的。如果開發者經常測試,他們可以更容易地發現並修改問題,這可以保證程式碼質量並保證團隊開發的進度。

比較JUnit和TestNG——Meera Subbraro

Martin Fowler曾說過,軟體開發領域中此前從沒有過這樣的事情:很少幾行程式碼對大量的程式碼起了如此重要的作用。JUnit過去直到如今依然是單元測試的一個標準。它是最流行的開源工具。當然現在我們有許多有別於JUnit的其他的開源工具。我自己,除了使用JUnit外,我還是用TestNG。下面我們來談談下這兩個框架。

JUnit和TestNG都使用Annotation,都使得測試簡單有趣。如果你寫兩個測試類,一個使用JUnit一個使用TestNG,除非你看到它們import語句,否則你幾乎看不到他們之間的差別。

如果你是一個TDD的信徒,通過執行測試來完成你的持續整合過程。TestNG可能更加適合。重新執行失敗的測試這樣的機制對於每天都進行編譯來說非常有幫助。而這個特性只有TestNG才有。

TestNG的另一個亮點是支援引數化。在JUnit中如果你要測試不同的引數,你需要寫不同的測試用例來覆蓋不同引數。而在TestNG,通過使用xml配置檔案做到。開發者可能會抱怨XML檔案”這下好了,除了要維護那些測試用例,我還要維護那麼一堆xml檔案”。(譯者按:JUnit4也已經支援引數化測試了)

JUnit生成的HTML格式的報告非常好。我使用TestNG和Java 6,生成的報告遠沒有JUnit那麼漂亮。

最後,兩個框架都有自己的長處和弱處,必要時我們可以同時使用。讓我們使用這兩個偉大的框架,享受編寫測試的快樂吧。

我為什麼從JUnit換到了TestNG上——Andres Almiray

當我開始編寫測試程式時候,我選擇了JUnit3.x。因為那個時候它是唯一的開源選擇,而且有著相當詳盡的文件和成堆的書供我參考。在此基礎上還有許多擴充套件如dbUnit,xmlUnit幫助測試一些大型元件。但是如果我們需要面對更多複雜的測試,通常是整合/功能測試,很明顯JUnit會力不從心。那就是為什麼我換到TestNG上。Cedric和Alexandru TestNG的作者從一開始就很明確,TestNG是為更廣的測試場合而設計,而不僅是單元測試。TestNG可以執行沒有修改過的JUnit測試,這使得兩者的轉換非常平滑。

稍後釋出的JUnit4.x在細節上非常類似TestNG,這也彌補了這兩個框架的裂痕。TestNG仍然是我最喜歡的,而且它仍然保持更新。現在在開源的Java測試框架中仍然有新進者,easyb,一個基於Groovy行為驅動開發的測試工具,為Java和Groovy測試。通過編寫合理的測試或是假定一個任務,它可以視為一種規範儘管它是可執行程式碼。如果你在Ruby世界中使用Rspec一樣。

為什麼JUnit仍然是首選——Aslam Khan

像許多人開始測試驅動開發和單元測試一樣,我也是從JUnit3.x起步的。我發現JUnit是最廣泛的工具,出現在各種不同的地方(ANT,Maven,Eclipse,IntelliJ IDEA, 等)。它也很容易介紹給那些新團隊。我也使用TestNG對它的多樣性同樣印象深刻。然而,JUnit的大量外掛(dbUnit,xmlUnit等)使得Junit仍然是首選的。如果你花大量的時間在Spring上,那麼基於Junit的Srping ApplicationContext aware測試用例會帶來優勢。為了測試前臺,我幾乎只使用Selenium。我曾經涉足過Canoo和其他的框架,但是發現這些途徑都是反TDD模式的。使用Selenium,我可以處理Selenium測試指令碼和記錄,給任何需要的人並日後處理。

如果我們談論的是純粹的TDD,即書寫良好的程式碼(不僅僅是良好的測試)需要增加一個mock測試。對於mocking,我使用Jmock,它和Junit配合良好,通過基於mock的方式和程式內部邊界,我得到了設計良好的,互相通訊的物件。這在可讀性和可維護性上邁出了重要的一步。EasyMock也不錯,但是Jmock是我個人的首選。

從Java世界上溯到Ruby世界中,RSpec很優秀而且也有DSL來描述場景。既然Rbehave已經融合進了Rspec,這樣的整合將成為Ruby世界的首選。有趣的是,Rbehave是從Jbehave衍生來來,它是一個行為驅動開發測試框架。如果你喜歡BDD模式來收集和確定需求,你會喜歡Jbehave和RSpec.

相關推薦

怎樣選擇Java測試框架 JUnit還是TestNG

Martin Fowler曾說過,軟體開發領域中此前從沒有過這樣的事情:很少幾行程式碼對大量的程式碼起了如此重要的作用。JUnit過去直到如今依然是單元測試的一個標準,是最流行的開源工具。當然現在我們有許多有別於JUnit的其他的開源工具。我自己,除了使用JUnit外,還

怎樣選擇Java測試框架 JUnit還是TestNG

自動測試成為你Java專案中的一部分了嗎?你最愛的測試框架是什麼哪?使用的又是哪一種標準?   本文的4名開發者將和你一起分享他們在自動測試領域中的觀點和經驗。當你的專案面臨測試階段的時候,希望這些觀點能對你有所幫助。如果你也想要分享自己的觀點,請回帖參與討論。我們真摯的希望

Java單元測試框架Junit

問題: 1、目前測試存在的問題 2、Junit注意的細節 3、Junit使用規範 4、斷言 5、案例 junit(單元測試框架) 1、目前存在的問題 1、目前的測試方法如果需要測試,

java測試Junit、Mock+代碼覆蓋率

tput 活性 插件 報告 tsa println doc 彈出 exe 原文見此處 單元測試是編寫測試代碼,用來檢測特定的、明確的、細顆粒的功能。單元測試並不一定保證程序功能是正確的,更不保證整體業務是準備的。 單元測試不僅僅用來保證當前代碼的正確性,更重要的是用來保證代

java測試框架如何執行groovy指令碼檔案

本人在寫基於httpclient的測試框架時,用到了groovy指令碼作為測試用例的指令碼語言,自然就需要java執行上傳的測試指令碼,在看過例項之後,自己進行了封裝,總體來說跟java反射執行java方法類似。但又有一些不相容的情況,部分已經寫了部落格做記錄了,以後會陸續更

Java測試框架

前言 在專案開發過程中必不可少的會用到測試框架來檢查自己的程式碼邏輯,可能大多數人和我一樣從來沒有怎麼重視過測試程式碼,認為測試程式碼存在與否的意義不大。但是,看過很多大牛的專案後,發現他們寫的專案中測試用例的程式碼遠多於實際程式碼。所以,為了向大牛們看齊,最

如何選擇自動化測試框架

軟體自動化測試,作為手工測試的替代,越來越受到關注。Pekka Klärck,作為Robot Framework的建立者和核心開發者,按照系統級別,介紹了幾種不同的自動化測試方法的區別。 一、記錄回放的方式流行於商業工具之中,無需程式設計技能即可快速上手。然而

【selenium】selenium 自動化測試框架部署1:selenium + JUnit + eclipse + testNG 環境部署

目錄 二、Firefox:Selenium IDE 安裝 三、jdk:下載和安裝 四、eclipse:下載和安裝 五、必要的jar包下載 六、eclipse:自動化測試框架環境部署 七、Firefox:Try Xpath 安裝 八、eclipse:安裝testNG外掛

JAVA+Maven+TestNG搭建介面測試框架及例項

1、配置JDK 2、安裝Eclipse以及TestNG Eclipse下載地址:http://beust.com/eclipse TestNG安裝過程: 線上安裝 輸入網址:http://beust.com/eclipse 線上安裝會比較慢,有的人可能還會連結不上這個地址,所以下面介紹一個離線下載的方

TestNg JAVA 自動化單元測試框架Demo

環境準備 既然是java 的自動化單元測試框架,就必須要有java的環境了,這裡使用的編輯器是Eclipse,已經安裝過TestNg 外掛,如果環境準備好就可以開始了 程式碼例項 程式碼結構

selenium+java+testNG+pageObject深入理解自動化測試框架

關於selenium+java+testNg的環境配置文章,本文主要講述測試框架的架構實現。 我們知道,搭建一個合理的測試框架能夠將自動化測試做大做大,一個合適的自動化測試框架能夠極大的降低程式碼的數量,便於後續的維護。文章先從測試框架的模型,思想講起,然後將各個部分做實現

Java JUnit 單元測試框架

JUnit是一個Java語言的單元測試框架。 Junit 測試也是程式設計師測試,即所謂的白盒測試 如使用eclipse 開發,不用新增jar包,eclipse內部已經集成了,我們只需要引入即可使用。 1.新增方法,【專案】上右擊,選擇Build Path ,進入 2 .

JAVA+TESTNG 二)Eclipse+TestNG搭建介面自動化測試框架

http://qa.blog.163.com/blog/static/190147002201510275306185/ http://www.51testing.com/html/40/n-3709140.html 一、環境安裝 1、前提 安裝好jdk 配置好Java環

自動化測試框架selenium+java+TestNG——配置篇

   最近來總結下自動化測試 selenium的一些常用框架測試搭配,由簡入繁,最簡單的就是selenium+java+TestNG了,因為我用的是java,就只是總結下java了。 TestNG線上安裝:  開啟Eclipse   Help ->Install

JAVA+TESTNG 三)Eclipse+TestNG搭建介面自動化測試框架

轉載http://www.cnblogs.com/findyou/p/5388853.html 1、介面說明 例:北京市天氣 介面的址:http://www.weather.com.cn/data/cityinfo/101010100.html 請求方式:GET請求結果:

基於Java Junit測試框架 + jmeter 做壓力測試

use 技術 font user tps 選擇 導包 image org 1.JUnit 用戶指南請查閱: https://junit.org/junit5/docs/current/user-guide/ 以一下代碼為例:add接口 代碼測試正常後,導出包:

Java自動化測試框架-01 - TestNG之入門篇 - 大佬的雞肋,菜鳥的盛宴(詳細教程)

TestNG是什麼? TestNG按照官方的定義: TestNG是一個測試框架,其靈感來自JUnit和NUnit,但引入了一些新的功能,使其功能更強大,使用更方便。 TestNG是一個開源自動化測試框架;TestNG表示下一代(Next Generation的首字母)。 TestNG類似於JUnit

Java自動化測試框架-02 - TestNG之理論到實踐 - 紙上得來終覺淺,絕知此事要躬行(詳細教程)

理論 TestNG,即Testing, NextGeneration,下一代測試技術,是一套根據JUnit 和NUnit思想而構建的利用註釋來強化測試功能的一個測試框架,即可以用來做單元測試,也可以用來做整合測試。因為TestNG是從Junit的思想構建而來,所以TestNG具備junit等所不具備的多重功

Java自動化測試框架-03 - TestNG之Test Group篇 - 我們一起組團打怪升級(詳細教程)

簡介   其實這篇文章的group巨集哥在上一篇中就提到過,但是就是舉例一筆帶過的,因此今天專門有一篇文章來講解Group的相關知識。希望大家茅塞頓開 ,有著更進一步認識和了解測試組。 一、Test Group(測試組)   TestNG 允許你將複雜的測試方法歸類為不同的組。不僅僅是可以宣告某個方法屬

Java自動化測試框架-04 - TestNG之Test Method篇 - 道法自然,法力無邊(詳細教程)

簡介 按照上一篇的計劃,這一篇給小夥伴們分享一下測試方法。 一、設定引數 測試方法是可以帶有引數的。每個測試方法都可以帶有任意數量的引數,並且可以通過使用TestNG的@Parameters向方法傳遞正確的引數。 設定方式有兩種方法:使用testng.xml或者Data Providers