2010-09-22 58 views
3

我讀過一些JUnitTestNG的比較,它看起來像TestNG有更多的配置選項。另一方面,JUnit更受IDE,建築工具,更多插件的支持。我是新來的Java自動化測試。我應該選擇哪種工具? JUnit或TestNG?

我沒有編寫單元測試的經驗。 我應該選擇哪種工具?

P.S. 我想我的問題更像是:我應該給TestNG一個嘗試,還是像其他人一樣堅持使用JUnit?

P.S. 我們開發網絡應用程序,所以我認爲選擇還應該考慮我們稍後將使用Selenium進行功能測試。 TestNG的和Unitils的

+5

'我沒有寫單元測試的經驗'然後挑一個,開始寫測試IMO。 – 2010-09-22 07:31:46

+0

問題是哪一個? – 2010-09-22 07:45:45

+0

[現在爲哪個UnitTest框架學習Java?]的可能的重複(http://stackoverflow.com/questions/3411768/which-unittest-framework-to-learn-for-java-now) – Raedwald 2013-11-06 08:15:59

回答

3

如果這是你第一次,我會推薦JUnit。

這是第一個,最受歡迎的。它有很好的文檔記錄,有很好的工具支持,並且是翻譯的隱喻 - 至少在最初階段 - 被翻譯成所有不同的語言(請參閱xUnit實現)。它對大多數任何項目都應該很好,它是一個很好的工具。作爲程序員,這將是一個很好的基準。

「替代品」還有其他功能 - 這就是爲什麼有替代品 - 但它往往是一個風格問題,而不是其他任何東西。 TestNG可能有幾個不同的功能,但JUnit也隨着註釋,替代匹配等功能發展。

是的,當時間到了的時候,JUnit會和Selenium一起工作。

+1

對於JUnit 3,還有很多遺留的示例和教程。它會大大混淆初學者,因此請確保您使用的是JUnit 4資源。 – topchef 2010-09-22 14:31:47

0

組合是unbeatable..It就足夠了您的所有需求..

+0

不確定我同意。以兩種不同的方式做出類似的事情讓我覺得不好。一致性很重要。 – GaryF 2010-09-22 07:46:06

0

我總是投給「其他人一樣」,這是因爲:在大多數情況下,這方面的經驗更有價值,因爲有很多信息,而且,對於jUnit,它被移植到多種語言,所以這種體驗將是'跨平臺'的。

0

JUnit是最流行的,它支持插件,以便更好地使用它

0

的JUnit和TestNG都是很相似,一旦你知道他們中的一個,很容易拿起另一個。

我使用TestNG的主要原因是測試組和測試依賴關係。您可以將測試分配到不同的組,然後輕鬆地運行組中的所有測試,或者從組中排除某些測試。例如,如果我想隔離幾個測試,我可以簡單地將它們添加到測試組「fahd」,然後僅運行該組。測試依賴性允許您在依賴測試失敗時跳過測試。你可能會認爲這些功能不是很重要,但是一旦你使用它們,你會想知道你沒有它們的生活。

+0

JUnit 4.8添加了'@ Category',它允許您將測試分配給一個類別並運行一個類別中的所有測試。請參閱http://stackoverflow.com/questions/2176570/how-to-run-all-tests-belonging-to-a-certain-category-in-junit-4/2176791#2176791 JUnit沒有一個概念的相關測試。 – NamshubWriter 2010-10-03 19:24:06

0

我作爲JavaEE開發人員工作。我們大量使用JUnit來測試我們的業務邏輯模塊。它非常強大,靈活,我們在官方發佈文檔中使用他的html報告作爲質量的證明。

7

TestNG的寫作是爲了克服JUnit 3的某些知覺限制。查看Cedric的blog postTestNG site上的其他文章以瞭解他的想法。

請注意,JUnit 3的某些限制是設計,而TestNG故意允許您執行JUnit設計人員明確禁止的操作。

TestNG對JUnit 3的最大優點是它允許使用註釋來定義測試,而不是強制擴展JUnit基類。 JUnit 4現在也可以用相同的方式使用註釋,縮小差距。

TestNG和JUnit之間最大的區別就是TestNG允許你的測試相互依賴,並允許你通過測試註釋來表達這些依賴關係。相反,JUnit強制所有的測試彼此獨立。

當然還有其他差異 - TestNG默認爲assertEquals(actual, expected, message),而JUnit爲assertEquals(message, expected, actual) - 但這是最​​大的。

我會說:挑一個,並嘗試一下。寫一些測試。兩者都可以與Selenium一起使用。這兩個工作都很好,兩者都可以與CruiseControl或Hudson一起使用。學習編寫好的單元測試遠比學習一組特定的命令更重要(無論如何,它們都非常相似)。

TestNG擁有更多的權力和更少的限制,IMO,但是這給了你更多錯誤的機會,當然。

+0

真的很好詳細答案,+1。 – fastcodejava 2010-10-14 01:13:39

相關問題