JUnit, 由Kent Beck 和 Erich Gamma開發(fā),幾乎是JAVA開發(fā)重要的第三方工具。正如Martin Fowler 所說,“在軟件開發(fā)領(lǐng)域,從來沒有如此少的代碼起到了如此重要的作用“。由于JUnit,JAVA代碼變得更健壯,更可靠,BUG也比以前更少。由于JUnit (由Smalltalk’s的SUnit得來) 的出現(xiàn),隨后產(chǎn)生了許多xUnit的測試工具,如nUnit (.NET), pyUnit (Python), CppUnit (C++), dUnit (Delphi) 和其它不同平臺及語言的測試相關(guān)的工具。
雖然JUnit也只是一個工具,但其產(chǎn)生的思想和技術(shù)卻較其架構(gòu)更意義重大。單元測試,測試先行的編程方式,測試驅(qū)動的開發(fā)方式,并非必須由JUNIT實現(xiàn),也不一定要用SWing實現(xiàn)GUI界面。JUNIT近的一次更新是在三年前,但它比其它大多數(shù)有BUG的框架都要健壯,更重要的是,JAVA一直在改進。現(xiàn)在JAVA支持泛型,枚舉,可變長度參數(shù),以及標記語言(開創(chuàng)了開發(fā)可重用框架的新局面)。
JUnit’s的停滯不前使得那些想要變革的開發(fā)人員換其它測試工具.挑戰(zhàn)者有Bill Venners的Artima SuiteRunner和Cedric Beust的TestNG.這些工具庫雖然有值得推薦的功能,但沒有任何一款的地位能與JUNIT相比,沒有任何一款工具被其它業(yè)界產(chǎn)品如Ant, Maven, Eclipse廣泛支持.因此Beck 和Gamma雙開始利用JAVA5的新特性來開發(fā)新版的JUNIT,目的是利用JAVA5中的標記特性使得單元測試開發(fā)更容易。Beck說:“JUNIT4的主要目的是通過簡化JUNIT的使用鼓勵更多的開發(fā)人員寫更多的測試”。雖然會與以前的版本兼容,但JUNIT4與從JUNIT1.0開始的版本相比會有一個非常大的變化.