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