<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨心蕓蕓 @ JPeanut(舊版)

    搬遷至 http://www.17m.net.cn/

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      43 Posts :: 0 Stories :: 54 Comments :: 0 Trackbacks


    作者:陳市明/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 支持也挺好。

    STRUTS原理圖.JPG

    上面的是在 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é)果。

    模擬STRUTS的單元測(cè)試模擬圖.JPG


    上面的圖是我們單元測(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ā)。


    posted on 2006-04-18 23:04 陳市明 閱讀(2791) 評(píng)論(9)  編輯  收藏 所屬分類: 基于j2ee單元測(cè)試框架介紹

    Feedback

    # re: 基于j2ee單元測(cè)試框架介紹之一-調(diào)試無需啟動(dòng)中間件 2006-04-19 08:54 charon@xxx
    兄弟,你們公司是不是閉門造車很久了???  回復(fù)  更多評(píng)論
      

    # re: 基于j2ee單元測(cè)試框架介紹之一-調(diào)試無需啟動(dòng)中間件 2006-04-19 21:39 葉子
    寫得形象易懂,有針對(duì)性.贊!  回復(fù)  更多評(píng)論
      

    # re: 基于j2ee單元測(cè)試框架介紹之一-調(diào)試無需啟動(dòng)中間件 2006-04-20 12:50
    同意樓上觀點(diǎn),寫得8錯(cuò),挺有思想的!赫赫!  回復(fù)  更多評(píng)論
      

    # re: 基于j2ee單元測(cè)試框架介紹之一-調(diào)試無需啟動(dòng)中間件 2006-04-20 16:28 小陸
    業(yè)務(wù)層應(yīng)該初一dao和service層之間。
    單元測(cè)試的重點(diǎn)應(yīng)該在業(yè)務(wù)層上。

    從你的圖上,我沒看見業(yè)務(wù)層。  回復(fù)  更多評(píng)論
      

    # re: 基于j2ee單元測(cè)試框架介紹之一-調(diào)試無需啟動(dòng)中間件 2006-04-20 19:17 陳市明
    @小陸
    恩,單元測(cè)試重點(diǎn)在業(yè)務(wù)層面,我現(xiàn)在是通過action去調(diào)用到后臺(tái)的業(yè)務(wù)層,所有的測(cè)試都是在action層面的。我這樣做的目的使為了讓單元測(cè)試做到功能測(cè)試的效果(呵呵,我使測(cè)試組成員,當(dāng)然要減輕自己的工作量)。
    其實(shí),我這樣做,通過代碼覆蓋率報(bào)告一樣可以做到業(yè)務(wù)層的 測(cè)試,只是對(duì)業(yè)務(wù)層的容錯(cuò)出來還是很難測(cè)試到。  回復(fù)  更多評(píng)論
      

    # re: 基于j2ee單元測(cè)試框架介紹之一-調(diào)試無需啟動(dòng)中間件 2006-04-25 14:43 廣州大盜
    創(chuàng)新的精神值得學(xué)習(xí)。
    但一個(gè)問題是, 你們的系統(tǒng)似乎沒有使用ejb。
    如果使用ejb會(huì)怎么處理,主要是容器負(fù)責(zé)的事務(wù)等。

       正如你說的,你是testor; 而且我注意到你們的流程第一點(diǎn):1 把當(dāng)天需要開發(fā)的模塊的 java 代碼全部些好。所以 我的感覺是,這只是對(duì)測(cè)試人員來說,不用頻繁部署和重啟服務(wù)器; 而且“不用”的原因是:一天只部署一次,你看我說的對(duì)嗎?
       所以,你講的測(cè)試框架對(duì)來說coder并不適用。

      回復(fù)  更多評(píng)論
      

    # re: 基于j2ee單元測(cè)試框架介紹之一-調(diào)試無需啟動(dòng)中間件 2006-04-25 19:40 陳市明
    @廣州大盜
    呵呵,我們的項(xiàng)目的確是沒有ejb的,,所以框架目前沒有對(duì)ejb提供功能..但是,,并不是說完全沒有辦法..框架可以再'"基于j2ee單元測(cè)試框架介紹之二'"中可以看到,,框架有自己的插件協(xié)議,只要按照這個(gè)協(xié)議編寫,,完全不用修改原來的代碼,,久可以添加很多功能..,,當(dāng)然也可以直接把junit的擴(kuò)展封裝下作為我們的插件用,,相信關(guān)于ejb的我們還是可以做到的..公司之前大家都認(rèn)識(shí)很難解決的jms的問題也通過自己的編寫jms插件來解決了..
    對(duì)于事務(wù),,我們的項(xiàng)目中都用jta的,,這個(gè)在這個(gè)框架中,,我們也通過編寫了jta的模擬的transtraction,,在aop容器在內(nèi)存中直接替換成我們的transation的了..雖然還是有點(diǎn)問題的,,但是還是解決這樣的問題了..  回復(fù)  更多評(píng)論
      

    # re: 基于j2ee單元測(cè)試框架介紹之一-調(diào)試無需啟動(dòng)中間件 2006-06-04 10:07 Slipper Feng
    就要答辯了,緊張!  回復(fù)  更多評(píng)論
      

    # re: 基于j2ee單元測(cè)試框架介紹之一-調(diào)試無需啟動(dòng)中間件 2006-06-05 23:51 陳市明
    呵呵,沒關(guān)系的哈,我來保駕  回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 国产成人精品日本亚洲直接| 看免费毛片天天看| 日韩免费高清视频| gogo免费在线观看| 99ri精品国产亚洲| 免费A级毛片无码A∨男男| 免费av一区二区三区| 亚洲日韩国产欧美一区二区三区 | 亚洲午夜福利精品久久| 99re6在线视频精品免费下载| 久久夜色精品国产噜噜亚洲a| 国产免费直播在线观看视频| 国产拍拍拍无码视频免费| 亚洲高清一区二区三区| 亚洲精品无码鲁网中文电影| 人妻视频一区二区三区免费| 亚洲免费在线观看| 亚洲另类无码一区二区三区| 亚洲国产a∨无码中文777| 国产区卡一卡二卡三乱码免费| 久久久久久国产精品免费无码| 亚洲AV无码专区在线观看成人| 亚洲综合一区二区国产精品| 全黄性性激高免费视频| 精品福利一区二区三区免费视频 | 在线观看免费人成视频色| 一个人看的在线免费视频| 中文字幕亚洲情99在线| 亚洲国产成人一区二区精品区| 国产精品va无码免费麻豆| 日韩亚洲国产高清免费视频| 伊人免费在线观看| 污网站在线免费观看| 亚洲AV色无码乱码在线观看| 亚洲成a人不卡在线观看| 精品亚洲永久免费精品| 亚洲国产人成中文幕一级二级| 成人a免费α片在线视频网站| 精品国产免费人成电影在线观看| 免费视频精品一区二区三区| 国产99精品一区二区三区免费 |