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

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

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

    love fish大鵬一曰同風(fēng)起,扶搖直上九萬里

    常用鏈接

    統(tǒng)計(jì)

    積分與排名

    friends

    link

    最新評論

    Spring+hibernate 單元測試框架總結(jié) (轉(zhuǎn))

    ?
    這兩天的花費(fèi)了一些時(shí)間在使用spring-mock進(jìn)行spring的單元測試問題上,基本上對這個(gè)問題有了一個(gè)完整的解決方案
    下面將對相關(guān)學(xué)習(xí)到和思考到的一些問題進(jìn)行一下整理:
    1、首先明確一下問題:要對什么進(jìn)行單元測試?
    我的問題是圍繞這一個(gè)DAO展開,我定義了一個(gè)DAO接口XXXDAO,并且寫了該DAO的實(shí)現(xiàn)XXXDAOImpl,然后使用spring對接口的實(shí)現(xiàn)進(jìn)行管理:
    <bean?id="XXXDAO"?class="com.easou.datastat.base.dao.impl.XXXDAOImpl">
    ????
    <property?name="sessionFactory">
    ??????
    <ref?bean="sessionFactory"/>
    ????
    </property>
    ????
    <property?name="hibernateTemplate">
    ??????
    <ref?bean="hibernateTemplate"/>
    ????
    </property>
    ??
    </bean>

    現(xiàn)在問題開始明確了,我要對XXXDAOImpl進(jìn)行單元測試。這里需要指明一個(gè)問題就是單元測試,測試的是有實(shí)現(xiàn)代碼的實(shí)現(xiàn)類,而不是接口。

    2、接著是下一個(gè)問題,如何取得Sping的上下文關(guān)系呢?
    這里就需要用到spring-mock了,其中有一個(gè)測試基類是AbstractTransactionalDataSourceSpringContextTests
    我讓測試用例XXXDAOImplTestcase繼承AbstractTransactionalDataSourceSpringContextTests,然后override其中的方法getConfigLocations()
    具體代碼如下:
    public?class?XXXDAOImplTestCase?extends?AbstractTransactionalDataSourceSpringContextTests?{

    ????
    ????@Override
    ????
    protected?String[]?getConfigLocations()?{
    ????????
    //?TODO?get?the?spring?context
    ????????
    ????????String[]?config?
    =?new?String[]{"file:D:\\javawork\\workspace\\datastat\\docroot\\WEB-INF\\applicationContext.xml","file:D:\\javawork\\workspace\\datastat\\docroot\\WEB-INF\\applicationContext-base.xml"};
    ????????
    ????????
    return?config;

    ????}

    }

    不難看出,該方法是為了讀入spring的上下文信息,這樣的話這個(gè)測試用例就可以直接使用spirng中定義的bean了
    但是這里需要注意一個(gè)問題*,就是文件路徑的問題,這里為了能夠清楚地說明文件的路徑規(guī)則我引用了spring-mock官方的getConfigLocation方法說明
    Subclasses must implement this method to return the locations of their config files. A plain path will be treated as class path location. E.g.: "org/springframework/whatever/foo.xml". Note however that you may prefix path locations with standard Spring resource prefixes. Therefore, a config location path prefixed with "classpath:" with behave the same as a plain path, but a config location such as "file:/some/path/path/location/appContext.xml" will be treated as a filesystem location.

    3 好了,該到最后一個(gè)問題了,取得Spirng上下問中定義的bean的實(shí)例來進(jìn)行單元測試
    這里有兩種方法,一種是定義一個(gè)代測單元的對象,然后定義好get,set方法,AbstractTransactionalDataSourceSpringContextTests會(huì)自動(dòng)根據(jù)Spring的上下文得到待測單元的具體實(shí)現(xiàn)。
    private?ExQueryDAO?exQqueryDAO;
    ????
    ????
    ????
    ????
    /**
    ?????*?
    @return?返回?exQqueryDAO。
    ?????
    */

    ????
    public?ExQueryDAO?getExQqueryDAO()?{
    ????????
    return?exQqueryDAO;
    ????}



    ????
    /**
    ?????*?
    @param?exQqueryDAO?要設(shè)置的?exQqueryDAO。
    ?????
    */

    ????
    public?void?setExQqueryDAO(ExQueryDAO?exQqueryDAO)?{
    ????????
    this.exQqueryDAO?=?exQqueryDAO;
    ????}


    另外一種就是使用applicationContext.getBean("XXXDAO");的方法取得實(shí)例
    XXXDAO xxxDAO = (XXXDAO)applicationContext.getBean("XXXDAO");

    接下來你就可以用這個(gè)bean的具體實(shí)現(xiàn)對相關(guān)方法進(jìn)行unittest了



    這里補(bǔ)充一個(gè)問題就是單元測試的運(yùn)行環(huán)境問題*,由于你可能在spring的配置文件中指定一些外部類所以你必須在junit的運(yùn)行環(huán)境中指定使用到的classpath,下面是eclipse的junit配置classpath
    junit-classpath.JPG


    最后我對整體的spring+hibernate的jsf框架進(jìn)行了一下單元測試的框架總結(jié),主要多了一個(gè)基本的BaseTestCase,用于統(tǒng)一讀取applicationContext
    單元測試框架.jpg

    可以看到下面的pagebean和jsp頁面以及相關(guān)的taglib的單元測試我還沒有完成:),我將在今后幾天繼續(xù)研究相關(guān)的單元測試問題

    posted on 2006-09-01 13:43 liaojiyong 閱讀(559) 評論(0)  編輯  收藏 所屬分類: Spring

    主站蜘蛛池模板: 国产不卡免费视频| 羞羞视频免费观看| 久久亚洲国产中v天仙www | 亚洲一区综合在线播放| 四虎永久免费网站免费观看| 青草草色A免费观看在线| 三年片在线观看免费大全电影 | 国产日产亚洲系列最新| 日韩免费电影在线观看| 岛国大片免费在线观看| 国产片AV片永久免费观看| 国产精品区免费视频| 中国黄色免费网站| 国产午夜精品久久久久免费视| 一区免费在线观看| 特级毛片爽www免费版| 深夜免费在线视频| 免费精品国产自产拍在线观看| 香港经典a毛片免费观看看| 妇女自拍偷自拍亚洲精品| 亚洲av永久无码| 午夜亚洲国产精品福利| 一区二区三区免费在线视频 | 两个人的视频www免费| 国产精品免费久久久久电影网| 久久www免费人成精品香蕉| 三级黄色免费观看| 亚洲视频免费在线看| 成年人免费视频观看| 亚洲av无码成人精品区| 久久亚洲国产精品一区二区| 亚洲视频中文字幕在线| 色婷婷六月亚洲综合香蕉| 亚洲免费日韩无码系列| 99在线观看免费视频| 青青草国产免费久久久91| 亚洲色欲久久久综合网| 亚洲av无码片区一区二区三区| 无套内射无矿码免费看黄| 国产一级淫片a免费播放口| 国产成人无码免费看视频软件|