或許我們已經習慣了使用JUnit來寫單元測試來保證代碼質量(我也一直這么做),但可能經常碰到這樣子的問題:
1. 我的程序多線程下正確性如何?性能如何?
2. 雖然Java有垃圾收集機制,但是兩個不同的Java程序員實現相同功能的Java程序可能使用的內存大不相同。
這兩點,很難通過JUnit來解決保證。p-unit很好的解決了這兩個問題:
1. 同一個測試案例,可以單線程運行,也可以多線程運行。和JUnit不同,p-unit的思想是測試案例就是測試案例,不牽涉運行邏輯,所以同一個測試案例,可以被不同的運行器運行。p-unit測試案例無需實現任何接口,所以當然兼容JUnit Test案例,包括setUp/tearDown函數。
2. 每個測試函數,p-unit給出了運行時間和內存消耗情況,這使得跑單元測試的同時,也做了時間/內存的性能測試,而無需到出現性能瓶頸時使用昂貴的profiler工具來查找問題。
另外,p-unit尤其側重性能的測試,它支持同一個測試案例,在不同參數下的運行。相信有性能測試經驗的程序員都知道,同一個測試場景,往往要測試3-4個數量級的不同數據,看起性能是線性還是幾何增長。這對性能評估非常重要。
測試結果方面,p-unit非常靈活,默認的形勢有控制臺輸出,文件輸出,圖片和pdf報表。當已正確性測試為主的時候,可以選擇控制臺輸出,當以性能測試為主的話,強烈建議圖片和pdf輸出,非常直觀的看出每個測試案例所消耗的時間和內存情況。
p-unit甚至支持不同虛擬機之間的性能比較,其結果反映到同一張圖上,對比非常明顯。隨著Java的開源,現在虛擬機的選擇也越來越多,SUN,BEA,IBM,Apache Harmony,Kaffe哪一個虛擬機最適合你的程序,p-unit非常容易告訴你答案。
p-unit官方主頁:http://p-unit.sourceforge.net/
【相關文章】