`
猫不吃的鱼
  • 浏览: 157466 次
  • 性别: Icon_minigender_1
  • 来自: 芜湖市
社区版块
存档分类
最新评论

ssh2单元测试和集成测试

阅读更多
单元测试
用来检验目标代码中很小的一部分。通常一个单元测试用于判断某个特定条件或者特定场景下的某个特定函数的行为。如果对某个功能模块进行单元测试时,我们希望屏蔽对外在功能模块的屏蔽,以便将焦点放在目标模块的测试上,可以使用虚拟对象模拟外在模块的行为。这样单元测试可以假想在外在模块正确的情况下本模块的逻辑的正确性了。单元测试下不应该依赖于spring容器,通过模拟对象完成单元测试。
如下是对Action的单元测试

UserAction
@ParentPackage("default")
@Namespace("/user")
public class UserAction extends ActionSupport{
	@Autowired
	private IUserService userService;
	
	private User user;
    @Action(value = "test", results = {@Result(name = "success", location = "/index.jsp")})
    public String test() {
       try{
    	   userService.save(user);
    	   return SUCCESS;
       }catch(Exception e){
    	   e.printStackTrace();
    	   return "error";
       }
       
    }
    
    @Action(value = "test2", results = {@Result(name = "success", location = "/index.jsp")})
    public String test2() {
       try{
    	   User user=userService.findUser(getUser().getId());
    	   if(user.getName().equals("xxx"))
    		   return SUCCESS;
    	   else
    		   throw new Exception();
       }catch(Exception e){
    	   e.printStackTrace();
    	   return "error";
       }
       
    }
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}

	public IUserService getUserService() {
		return userService;
	}

	public void setUserService(IUserService userService) {
		this.userService = userService;
	}

}


UserService
public class UserService implements IUserService{
	@Autowired
	private UserDao userDao;
	@Transactional(rollbackFor=Exception.class)
    public void save(User userObject)throws Exception {
		try{
                        userDao.save(userObject);
			if(userObject.getName().equals("admin"))
				throw new Exception("fuck");
		}catch(Exception e){
			throw e;
		}
    }
	
	public User findUser(long id){
	    return userDao.findById(id);
	}
}



YhActionTest
  public class YhActionTest extends AbstractModelAndViewTests {

    public void testYhlist(){

        MockHttpServletRequest request=new MockHttpServletRequest();
        MockHttpSession session=new MockHttpSession();
        request.setSession(session);
        UserAction mAction=new UserAction();
        IUserService yhService= EasyMock.createMock(IUserService.class);
        mAction.setUserService(yhService);

        User yh=new User();
        yh.setId(100);
        yh.setName("xxx");
        yh.setPassword("xxxx");
        EasyMock.expect(yhService.findUser(yh.getId())).andReturn(yh);
        EasyMock.replay(yhService);
        mAction.setUser(yh);
        String r=mAction.test2();
        assertEquals(r, "success");

        EasyMock.verify(yhService);

    }

}


MockHttpServletRequest ,MockHttpSession 是虚拟的request,session,因为不是web环境中,所以需要虚拟这两个对象,(本测试没用到)。IUserService yhService= EasyMock.createMock(IUserService.class);是虚拟一个服务类实例。


集成测试
集成测试是在功能完成后,验证模块之间匹配调用的正确性而进行的测试。一般对业务层和web层进行集成测试。集成测试应该是事先装配好模块和模块之间的关联。因此需要spring配置文件的作用,启动spring容器。

建立测试目录
test/action   test/service
将applicationContext.xml和dataSource.properties放到test根目录下面。另struts.xml需要在src根目录下。因为不是启动web容器,所以,不会将web-inf中的applicationContext.xml和dataSource.properties加载进classes路径中。所以需要放到test下面。

test/action/UserActionTest
测试action+service+dao

public class UserActionTest extends StrutsSpringTestCase{
    private UserAction mAction;
    private ActionProxy proxy;

    @Override
    public String[] getContextLocations() {
        return new String[]{"classpath:applicationContext.xml"};
    }

    public void testLogin() throws Exception {
        User user=new User();
        user.setName("yuyong");
        user.setPassword("890806");
        proxy = getActionProxy("/user/test");
        mAction =  (UserAction) proxy.getAction();
        mAction.setUser(user);
        assertEquals("success",mAction.test());
        user.setName("admin");
        mAction.setUser(user);
        assertEquals("error",mAction.test());
    }

}




test/action/AbstractSpringContextTests1
测试service+dao

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations= "classpath:applicationContext.xml")
@TransactionConfiguration(defaultRollback=true)
@Transactional
public class AbstractSpringContextTests1{
    @Resource
    private IUserService yhService;

    @Test
    public void save() throws Exception {
    	User user=new User();
    	user.setName("admin");
    	user.setPassword("134");
        yhService.save(user);
    }
}


鄙人才疏学浅,如有不对,望各位前辈细心指出。谢谢。
3
3
分享到:
评论

相关推荐

    基于SSH的学生信息管理系统-实训个人工作总结.doc

    《基于SSH的学生信息管理系统-实训个人工作总结.doc》是一份...测试和调试部分,总结可能会强调个人对系统的测试策略和测试用例的制定,以及如何进行单元测试、集成测试和验收测试。可能会详细讲述个人如何发现并修复代

    junit单元测试

    junit单元测试测试是测试部门的责任,我的责任应该关注在写代码上; 测试不是一种技术工作,毫无乐趣可言,请不要骚扰我。我可是一个了不起的SSH程序员 我们有测试人员,有集成/系统/确认测试,他们迟早会发现我的...

    SSH框架整合

    2、有用户登录、单元测试。功能 用户的增、删、改、查, 用户登录有jsp页面 增、删、改、查在单元测试完成。 3、登录是根据 员工表的 用户名 和密码登录的。 -----使用时要导入项目------- 4、在beans.xml配置 ...

    毕业设计-JSP基于SSH2的网络在线问答系统(完整版).zip

    这些资源包括单元测试、集成测试、性能测试等方面的指导,帮助学生确保毕业设计项目的正确性和稳定性。 适合人群:该资源适合计算机专业的学生,尤其是即将进行毕业设计的学生。无论是本科生还是研究生,都可以通过...

    moduleTest:单元测试集成测试初探

    单元测试 karma > mocha/jasmina (BDD) > mocha 插件chai(支持TDD/BDD) ###全局 mocha 执行 mocha , 默认执行 test下面的js文件 mocha --reporter spec server-test/*.js // 执行一定路径中的文件 ###chai模块 ###...

    OA项目SSH整合框架

    2,单元测试 @Test // 测试声明式事务 public void testTransaction() { InsertUserService service = (InsertUserService) ac.getBean("insertUserService"); service.addUsers(); } 3,...

    xcodebuild-unittest-miniserver:迷你服务器(用 Go 编写)通过 SSH 执行 Xcode 单元测试

    集成到通过 SSH 执行命令的自动化系统中真的很痛苦。 解决方案 您必须从 GUI 中的登录用户(例如:从终端应用程序)启动这个简单的服务器。 您可以通过launchctl自动执行此操作,以便在用户登录服务器时自动启动。 ...

    infrastructure-integration-test:斯坦福数字存储库的集成测试

    SDR集成测试 一组Capybara测试,可驱动浏览器在登台或QA环境中对SDR进行系统间集成测试。 安装 这些测试取决于是否已下载Firefox(默认)或Chrome。 bundle install bundle exec rake webdrivers:geckodriver:...

    hibernate4.3.10,spring 4.2 ,struts2.3.24集成项目环境

    hibernate4.3.10,spring 4.2 ,struts2.3.24做了一下简单的集成,能够运行起来,对其进行了简单的单元测试,测试时hibernate4使用hibernatetemplate出现事务异常,没有解决,只是一个简单的框架原型。采用当前比较新...

    Struts2SpringHibernate整合,一个HelloWorld版的在线书店(项目源码+详尽注释+单元测试)

    然而,很多初学者在集成这3个框架的时候,总是会遇到各种各样的问题。 我在读大学刚刚学习SSH的时候,也是如此。 当时,做了一个Demo性质的在线书店,现在分享给大家。 希望对初学者有所帮助。 包简介 action:...

    JavaEE求职简历-姓名-JAVA开发工程师-3年经验.docx

    熟练使用 Java 基础知识,有良好的编码习惯,熟练使用常用的 Java API。...> 熟悉 Junit,dbunit,EasyMock 技术,对项目进行单元测试和集成测试。 > 熟悉 Netfix 策略实现分布式、实现模块间的通信,

    跟我学spring3(8-13)

    【第八章】 对ORM的支持 之 8.1 概述 ——跟我学spring3 【第八章】 对ORM的支持 之 8.2 集成Hibernate3 ——跟我学spring3 【第八章】 对ORM的支持 之 8.3 ...【第十三章】 测试 之 13.3 集成测试 ——跟我学spring3

    通向架构师的道路

    自己整理的一位牛人写的通向架构师的道路的博文,对架构师入门很有指导意义...(第二十五天)SSH的单元测试与dbunit的整合 (第二十六天)漫谈架构与设计文档的写作技巧 (第二十七天)IBM网格计算与企业批处理任务架构

    js-unit-testing-workshop

    技术研讨会:前端单元测试这是一个包含示例和用于单元测试前端组件的基本配置的项目。 它探讨了基本的单元测试、函数监视、DOM 夹具测试和 AJAX 模拟。 它还展示了 Karma、Jasmine、Grunt 和伊斯坦布尔之间的集成===...

    java6.0源码-gitbucketTest:gitbucket测试

    ssh 访问) 存储库查看器和在线文件编辑 存储库搜索(代码和问题) 维基 问题 分叉/拉取请求 邮件通知 活动时间表 用户管理(针对管理员) 组(如 Github 中的组织) LDAP 集成 支持 Gravatar 以下功能尚未实现,但...

    javassh框架源码-nutz-sourcecode-read:阅读nutz的阅读博客整理,nutz是一个精巧的java开发框架,你可以用它

    先通过官方文档和单元测试代码,了解整理每个模块的细致功能列表。 通过阅读源码了解具体设计细节,要能能明白其中设计思想就更好。 一些阅读源码的工具 在idea中,选中一个模块包路径或者在一个类中,摁住ctrl+...

    ubuntu-server-gui:Ubuntu 服务器 GUI 工具

    客户端应用程序和 nodejs 组件的 Jasmine 单元测试 Selenium + Vagrant 处理 GUI 应用程序和服务器操作之间的集成 用于平滑测试编排的 Gulp 驱动工具 NodeJS 与服务器建立直接 SSH 连接并处理本地和远程 i/o OSX 上...

    phpstorm7汉化包v7.1.4中文版

    phPStorm7汉化包是phpstorm 7.1的一个汉化包文件... PhpStorm超越了语言的PHP集成开发环境,支持PHP5.5,提高PHP的语法着色,SSH控制台和远程工具,支持Drupal和PHP框架,调试和测试改进等。PhpStorm7跟上最新的PHP与网

    lando-pantheon-ci-workflow-example:在将代码集成到生产中之前,配置Lando和Travis CI以进行不错的本地开发人员+健全性检查

    单元测试和behat测试您需要什么在开始之前,您需要确保您拥有一些东西: GitHub帐户,最好添加您的SSH密钥具有Pantheon帐户Travis CI帐户 * (可选) 用于GitHub中的看板样式问题管理也绝对值得阅读有关上游。...

    spring-boot示例项目

    helloworld|[spring mvc,Spring Boot项目创建,单元测试](https://github.com/smltq/spring-boot-demo/blob/master/helloworld/HELP.md) web|[ssh项目,spring mvc,过滤器,拦截器,监视器,thymeleaf,lombok,jquery,...

Global site tag (gtag.js) - Google Analytics