JUnitDoclet(www.JUnitdoclet.org)
JUnitPerf (www.clarkware.com/software/JUnitPerf.html)
MockObjects(www.mockobjects.com)
EasyMock (www.easymock.org)。
而另一方面,商業的測試框架則提供了盡可能多的功能和綜合環境。
五、測試覆蓋
在編碼和測試的過程中,你必須確認所有的代碼都被測試到了。JUnit能幫助編寫測試,然而選擇一個完整的測試集卻依賴于每一個程序員。在測試中有很多種測試覆蓋。例如語句覆蓋(也被稱為線性覆蓋),結果覆蓋(也被稱為分支覆蓋或路徑覆蓋)等等。如果你正在為一個開源項目工作,就能得到Clover(http://www.cenqua.com /clover/)這是一個商業的測試覆蓋工具,但遵循了非商業的許可證。另外一個商業的測試覆蓋工具Jcoverage (www.jcoverage.com)擁有一個遵循GPL的版本,但在功能上有所限制。GroboUtils (http://groboutils.sourceforge.net)包含了一個覆蓋分析的包。Emma (http://emma.sourceforge.net)是另外一個易用的工具。兩個JUnit特有的工具包是NoUnit (http://nounit.sourceforge.net/using.html) 和 Jester (http://jester.sourceforge.net)。GNU的編譯器網站也包含了一個叫GCov的工具。
援引Glenford Myers關于測試的經典書中的一句話:不要丟棄測試用例,除非程序被丟棄("Avoid throwaway test cases unless the program is truly a throwaway program."見JUnit Resources欄)。你必須讓你的代碼和測試保持同步,做到這一點,無論什么時候代碼改變了,回歸測試都很簡單。
用心計劃的測試集合能創建非常有效的項目文檔?匆粋類如何運行的最好辦法就是看它的運行,而單元測試用例包含的代碼片斷則正好能滿足這一點。
一個綜合的測試集合并不會浪費運行資源,因為測試代碼不會干擾程序。但是測試會消耗一定的編譯時的資源,不斷增加的測試用例能拖慢編譯的過程,要避免這個狀況,開發人員可以按需要定制編譯過程來完成系統的構建。比如可以用Ant來定義一組測試任務,這些任務能在每天結束的時候,在代碼提交以前執行。
當然,單元測試只是測試環節中的很小一部分。除單元測試以外,我們還有將某一功能相關的代碼一起執行測試,這就是功能測試,功能測試下面以后,就是整個系統的測試(系統測試);在交付以前,最終用戶會看軟件是否達到了預定的需求(接受測試)等等。但是為軟件的最小部分測試添加很多的舒適和樂趣會給后面的測試打下結實的基礎。
文章來源于領測軟件測試網 http://www.kjueaiud.com/