• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    軟件測試在Spring中進行集成測試(一)

    發布: 2009-12-23 23:29 | 作者: 網絡轉載 | 來源: 領測軟件測試 | 查看: 29次 | 進入軟件測試論壇討論

    領測軟件測試網

    軟件測試在Spring中進行集成測試(一)

    單元測試時,我們盡量在屏蔽模塊間相互干擾的情況下,重點關注模塊內部邏輯的正確性。而集成測試則是在將模塊整合在一起后進行的測試,它的目的在于發現一些模塊間整合的問題。有些功能很難通過模擬對象進行模擬,相反它們往往只能在真實模塊整合后,才能真正運行起來,如事務管理就是其中比較典型的例子。

            按照Spring的推薦(原話:You should not normally use the Spring container for unit tests: simply populate your POJOs in plain JUnit tests!),在單元測試時,你不應該依賴于Spring容器。換言之,你不應該在單元測試時啟動ApplicatonContext并從中獲取Bean,相反你應該通過模擬對象完成單元測試。而集成測試的前提則是事先裝配好模塊和模塊之間的關聯類,如將DAO層真實的UserDao和LoginLogDao裝配到UserServiceImpl再進行測試。具體裝配工作是在Spring配置文件中完成的,因此在一般情況下,集成測試需要啟動Spring容器,你可以在測試類中簡單地從Spring容器中取出目標Bean進行測試。

    需要測試的業務接口

            假設我們的應用中擁有一個UserService業務層接口,它擁有4個業務方法,其代碼如下所示:
    代碼清單1 UserServie接口

    package com.baobaotao.service;
    import com.baobaotao.domain.User;
    import org.springframework.transaction.annotation.Transactional;
    @Transactional
    public interface UserService {
    boolean hasMatchUser(String userName,String password);
    User findUserByUserName(String userName);
    void loginSuccess(User user);
    void registerUser(User user);
    }

            我們通過UserServiceImpl對UserService提供了實現: 
            代碼清單2 UserServiceImpl實現UserService接口

    package com.baobaotao.service;
    import com.baobaotao.dao.LoginLogDao;
    import com.baobaotao.dao.UserDao;
    import com.baobaotao.domain.LoginLog;
    import com.baobaotao.domain.User;
    public class UserServiceImpl implements UserService {
    private UserDao userDao;
    private LoginLogDao loginLogDao;
    public boolean hasMatchUser(String userName, String password) {
    int matchCount =userDao.getMatchCount(userName, password);
    return matchCount > 0;
    }
    public User findUserByUserName(String userName) {
    return userDao.findUserByUserName(userName);
    }
    public void loginSuccess(User user) {
    user.setCredits( 5 + user.getCredits());
    LoginLog loginLog = new LoginLog();
    loginLog.setUserId(user.getUserId());
    loginLog.setIp(user.getLastIp());
    loginLog.setLoginDate(user.getLastVisit());
    userDao.updateLoginInfo(user);
    loginLogDao.insertLoginLog(loginLog);
    }
    public void setLoginLogDao(LoginLogDao loginLogDao) {
    this.loginLogDao = loginLogDao;
    }
    public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
    }
    }

            UserServiceImpl引用了兩個DAO層的類(UserDao和LoginLogDao)共同實現UserService的接口,在UserServiceImpl開放使用之前,我們有必須對其進行集成測試,以保證實現邏輯的正確性。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>