作者:陳市明/Slipper Feng
摘自:http://www.tkk7.com/JPeanut
J2EE
是目前公認(rèn)的比較慢的一種開發(fā),相比
.net
,
php
,
asp
等而言。其實(shí),
j2ee
的開發(fā)者都深有體會(huì)的,
java
代碼編寫的速度其實(shí)并不慢,在
eclipse
和
jbuilder
等可視化界面的幫助下,編寫代碼變的越來越簡(jiǎn)單;但是在調(diào)試的時(shí)候,每改完一個(gè)
java
或者
xml
代碼要預(yù)覽改的效果的話,必須要重新構(gòu)建,部署,重啟服務(wù)器
,
這些動(dòng)作反反復(fù)復(fù),消耗的時(shí)間不少。
近期為公司寫了個(gè)單元測(cè)試的框架,基本上解決了反反復(fù)復(fù)構(gòu)建,部署,重啟服務(wù)器的問題。我們的項(xiàng)目的都是運(yùn)用了類似
struts
-
spring
-
hibernate
的
MVC
架構(gòu)(下面簡(jiǎn)稱
ssh
),不同的就是中間的
aop
是自己開發(fā)實(shí)現(xiàn)的,而沒有運(yùn)用
spring
的。不過,我們的單元測(cè)試框架對(duì)標(biāo)準(zhǔn)的
struts
-
spring
-
hibernate
支持也挺好。
上面的是在
ssh
的一次交互的原理圖,做過
struts
開發(fā)者都會(huì)很熟悉。首先,是
jsp
通過
submit
的
url
將表單數(shù)據(jù)提交給后臺(tái)
action
的
servlet
,后臺(tái)通過在
struts-config.xml
中的配置找到相關(guān)的×××
Action
,然后通過×××
Service
,×××
Dao
操作數(shù)據(jù)庫,再將數(shù)據(jù)返回給另外一個(gè)
jsp
,讓他顯示結(jié)果。
上面的圖是我們單元測(cè)試框架實(shí)現(xiàn)構(gòu)建,部署,重啟服務(wù)器的原理圖。我們很容易從圖上看的出來,我們寫了個(gè)
Test
×××
Action
來模擬
2
個(gè)
jsp
的動(dòng)作,該類分成
2
部分上面一部分是模擬了
jsp
頁面
submit
的動(dòng)作(包括模擬提交給
url
,模擬提交數(shù)據(jù)),下面一部分是接收×××
Action
返回的數(shù)據(jù),然后,進(jìn)行校驗(yàn)(此處的校驗(yàn),我們用了
junit
的斷言功能)。通過用
java
類來模擬
jsp
的好處在于,我們可以完全把這個(gè)一個(gè)交互作為一個(gè)
application
來運(yùn)行起來,非常容易的做到單步調(diào)試,而不用到真實(shí)的平臺(tái)上,啟動(dòng)服務(wù)器上運(yùn)行。(注:此處有
2
個(gè)
db
:開發(fā)
db
和測(cè)試
db
,這個(gè)再以后的介紹中會(huì)講到)
我們還為在這個(gè)架構(gòu)上開發(fā)制定了流程:
1
把當(dāng)天需要開發(fā)的模塊的
java
代碼全部些好
2
通過這種模式調(diào)試
java
代碼
3
在確保這些
java
代碼無誤后,構(gòu)建,部署,啟動(dòng)服務(wù)器
4
然后編寫所有的
jsp
(因?yàn)樾薷?/span>
jsp
無需啟動(dòng)服務(wù)器)
這樣,在開發(fā)一天的所有代碼,幾乎都不用怎么重啟服務(wù)器,可以為開發(fā)人員省下很多時(shí)間,也使得開發(fā)人員喜歡的單步調(diào)試變的異常簡(jiǎn)單,提高代碼的質(zhì)量。
我們已經(jīng)在真實(shí)的項(xiàng)目中實(shí)施了該流程的開發(fā),得到的效果和預(yù)期的一樣。當(dāng)然還是比不過其他語言的開發(fā),不過我們的架構(gòu)還在不斷改進(jìn)(通過改進(jìn)流程、編寫
eclipse
等開發(fā)工具的插件等方法),使我們的開發(fā)人員可以更加快的進(jìn)行
j2ee
的開發(fā)。