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