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

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

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

    風人園

    弱水三千,只取一瓢,便能解渴;佛法無邊,奉行一法,便能得益。
    隨筆 - 99, 文章 - 181, 評論 - 56, 引用 - 0
    數據加載中……

    Spring DAO 測試

    今天我將展示一下我是如何在實際中對dao進行單元測試的
    首先我們來確認一下dao需要什么樣的環境,我的dao是用Spring+hibernate來構建的,而對應的數據源是oracle9。所以要進行dao的測試我需要從Spring的連接oracle的context中獲取dao的實例出來,這里我使用的是spring-mock
    spring-mock使用比較簡單的,只需要設置spring的配置文件路徑就可以獲得上下文了
    這里需要注意的是這個spring上下文是ClassPathApplicationContext,而我們在web環境中經常遇到的是WebApplicationContext
    /**
    ?*?$Id:$
    ?*
    ?*?Copyright?2005?easou,?Inc.?All?Rights?Reserved.
    ?
    */

    package?test.spring.common;

    import?org.springframework.test.AbstractTransactionalDataSourceSpringContextTests;

    import?test.PathConfig;

    public?class?BaseSpringTestCase?extends
    ????????AbstractTransactionalDataSourceSpringContextTests?
    {????

    ????@Override
    ????
    protected?String[]?getConfigLocations()?{

    ????????String[]?config?
    =?PathConfig.springxml;

    ????????
    return?config;

    ????}
    ????????
    ????
    public?void?testConfig()?{????????
    ????????assertNotNull(
    "spring-mock?context?has?bean?init()",this.applicationContext);
    ????}


    }
    這里testConfig是用來檢查你spring配置的加載是否正確的

    下面給出一個DAO的簡單查詢方法
    public?List?getHomepageAreasByChannelId(long?channelId)?{

    ????????
    return?this.executeHQL("?from?CsHomepageArea??h?where?h.csChannel.id='"
    ????????????????
    +?channelId?+?"'?order?by?h.theOrder");
    ????}


    上面的方法指示根據一個id取列表出來,而我們要測試的目標有(其實也就是我們這個方法要實現的目標):
    1、給出正確的id是否能否返回正確的結果
    2、返回的結果集能夠根據hibernate配置文件而得到我們期望的結果集(比如說對子集的lazy讀取)
    3、返回的結果集是否按照你所期望的排序
    4、給出錯誤的id是否在獲取數據時會出錯
    根據上面的測試目標我們就很容易的得到下面的測試方法了

    public?void?testGetHomepageAreasByChannelId()?{
    ????????List?list?
    =?channelDAO.getHomepageAreasByChannelId(1);
    ????????assertNotNull(
    "homepage?list?is?not?null",?list);
    ????????CsHomepageArea?homepage?
    =?(CsHomepageArea)?list.get(0);
    ????????assertNotNull(
    "homepage'name?is?not?null",?homepage.getName());
    ????????assertNotNull(
    "homepage'channel?has?been?lazy",?homepage.getCsChannel()
    ????????????????.getName());
    ????????assertNotNull(
    "homepage'column?has?been?lazy",?homepage.getCsColumn()
    ????????????????.getName());
    ????????assertNotNull(
    "homepage'subject?has?been?lazy",?homepage
    ????????????????.getCsSubjects().iterator().next().getName());
    ????????CsSubject?subject?
    =?(CsSubject)?homepage.getCsSubjects().iterator()
    ????????????????.next();
    ????????assertNotNull(
    "homepage'subject'keyword?has?been?lazy",?subject
    ????????????????.getCsSubjectKeywords().iterator().next().getName());

    ????}

    對于DAO層的查詢方法,我們測試的就是判斷返回的數據是否是我們需要的

    下面這個方法是DAO的增改方法,和刪除方法

    public?void?saveComment(CsComment?comment)?{
    ????????getHibernateTemplate().saveOrUpdate(comment);????????
    ????}

    ????
    public?void?deleteComment(CsComment?comment)?{????????
    ????????getHibernateTemplate().delete(comment);????????
    ????}

    ?

    對于這種無返回值得方法我們主要測試的是:
    1、對于正確的數據是否能夠正確的存入數據庫或者從數據庫刪除
    2、對于錯誤的數據操作能夠有錯誤信息(如主鍵重復)

    public?void?testSaveComment(){
    ????????CsComment?comment?
    =?new?CsComment();
    ????????comment.setCommentDate(
    new?Date());
    ????????comment.setContent(
    "comment?test");
    ????????channelDAO.saveComment(comment);
    ????????CsComment?dbComment?
    =(CsComment)channelDAO.getEntity(comment.getId());
    ????????assertNotNull(
    "comment?has?bean?saved",?dbComment);
    ????}

    ????
    public?void?testDeleteComment(){
    ????????CsComment?comment?
    =?new?CsComment();
    ????????comment.setId(
    new?Long(13));
    ????????channelDAO.delete(comment);
    ????????CsComment?dbComment?
    =(CsComment)channelDAO.getEntity(comment.getId());
    ????????assertNull(
    "comment?has?bean?delete",?dbComment);
    ????}

    其實這種save或者delete的方法由于使用時都是基本調用hibernate的方法,所以在我看來測試的意義并不是很大

    posted on 2007-01-18 11:37 風人園 閱讀(1552) 評論(0)  編輯  收藏 所屬分類: DAO

    主站蜘蛛池模板: 国产色在线|亚洲| 亚洲天堂免费在线| 2021免费日韩视频网| 亚洲色无码专区一区| 国产L精品国产亚洲区久久| 免费A级毛片无码A∨中文字幕下载| 久久精品国产亚洲αv忘忧草| 四虎永久免费地址在线观看| 中文字幕免费视频精品一| 亚洲成a人片毛片在线| 国产一精品一aⅴ一免费| 大地资源网高清在线观看免费| 亚洲一级黄色大片| 亚洲乱亚洲乱少妇无码| 91在线视频免费看| 久久久久久久国产免费看| 亚洲综合色区中文字幕| 亚洲熟妇无码AV在线播放| 最近免费中文字幕大全| 东方aⅴ免费观看久久av| 日本亚洲欧美色视频在线播放| 国产亚洲精品观看91在线| 精品久久免费视频| 最近在线2018视频免费观看| 九九免费观看全部免费视频| 亚洲第一成人在线| 亚洲狠狠综合久久| 亚洲国产av无码精品| 欧洲精品成人免费视频在线观看| 久久久精品视频免费观看| 亚洲国产精品无码久久九九大片| 亚洲AV永久无码精品水牛影视| 日本免费中文字幕在线看| 亚洲毛片免费观看| 国产一级一毛免费黄片| 鲁啊鲁在线视频免费播放| 精品亚洲AV无码一区二区| 亚洲综合无码一区二区| 国产亚洲人成网站在线观看不卡 | 国产区在线免费观看| 色综合久久精品亚洲国产|