我做過的項目不多。也就幾個。做項目的經歷是個學習的過程。
第一個項目,純Jsp,沒有任何的java類,當時就覺得好郁悶啊。做久了,根本找不到北。
第2個項目:開始會用些javabean來做了。但是還是一個字好亂。
第3個項目:開始使用hibernate, 只是對數據庫層做了些簡單的封裝,修改起來比較好了點
第4個項目:研究Webwork+spring+hibernate。終于實現了所謂的MVC了。哈哈,該起程序來終于開始有點爽了。
第5個項目: 開始引入了單元測試,現在還在很懵懂在學習中,為了更好的測試,我們開始努力寫出更高質量的代碼。所以對軟件的分層更細致了些。
我們可以從測試來分出上的設計的好壞。
1,純jsp,根本無從單元測試,我想就是那些大牛們也很難寫出這樣的測試代碼吧
2,對于純粹只有get/set的javabean而言,我想應該是沒有必要做單元測試的。如果有邏輯代碼的話,測試起來也是相當困難的,因為你不知道里面的邏輯代碼跟多少個類大了交道,你會為了測試這段代碼,建立相關的環境,比如啟動EJB,Web容器等。跟難預料的是,跟你耦合的類未必就是正確的,其實你的測試代碼跟你的javabean邏輯是對的,但是因為你引用的類(也就是耦合類)的邏輯是錯誤的,這將導致你的測試是個紅色,“真的很抱歉,其實我也不想這樣的,單元測試說”。 這樣就足以證明是你的設計問題了。并不是單元測試的問題。所以說第個項目測試是很難測是的。只是比不能測試好一點點。
3,至于第3個跟第2個差不多。
4,第4個由于對每個層做了細致設計,所以設計測試代碼容易點,而且可以通過easymock等工具進行分層測試,這樣可以做到更細粒度的測試,對測試覆蓋率也是很有幫助的。下面我將主要通過第4個項目的用戶注冊例子來講單元測試的各個方面。
先看下,源代碼的包結構。
接下來看下流程圖。
可以很清楚的知道,沒一層做些什么工作,接下的文章,我將會根據我的設計習慣,一一給出他們相應的測試代碼。希望高手們指教。
我不會繪制UML圖,所以只好手工來畫,可惜手機像素不高,所以。。。。
|