junit源碼探秘(一):準備
1.1 題引
前幾天和朋友聊天,朋友說你作為自動化測試?絲,居然沒有讀過Junit的源碼,實在是不應。于是下定決心認真研究一下Junit的源碼,通過學習Junit源碼,希望從中學到一些好的編程風格和實現思路以及自動化工具設計的思想。
JUnit是一個開源的java單元測試框架。在1997年,由 Erich Gamma 和 Kent Beck 開發完成。這兩個牛人中 Erich Gamma 是 GOF 之一;Kent Beck 則在 XP 中有重要的貢獻。
JUnit設計的非常小巧,但是功能卻非常強大。主要有以下特性:
1) 提供的API可以讓你寫出測試結果明確的可重用單元測試用例
2) 提供了三種方式來顯示你的測試結果,而且還可以擴展
3) 提供了單元測試用例成批運行的功能
4) 超輕量級而且使用簡單,沒有商業性的欺騙和無用的向導
5) 整個框架設計良好,易擴展
本次學習Junit3.8作為例子進行學習。
1.2 簡單Junit例子
首先用一個完整實例來說明 JUnit 的使用。由于本次的學習分析對象是 JUnit 的實現代碼(即源碼),因而Junit的使用不在深入討論中;整個學習調試跟蹤過程中,引用比較簡單的加減乘除運算作為測試代來研究源碼。
被測試代碼類如下:
測試類代碼如下:
另外,為了深入研究源碼,在調試跟蹤過程中使用Junit Test和Java Application兩種方式交叉調試,所以在Junit源碼中加入運行參數,如下圖所示,主要以Junit默認的文本運行方式(即textui方式)