`
jiasongmao
  • 浏览: 671529 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

通过spring管理的web工程的junit单元测试方法一

阅读更多
一、Spring Mock类简介
Mock对象是一个术语,原来主要流行于eXtreme程序员和JUnit小组中。在单元测试上下文中,一个mock对象是指这样的一个对象——它能够用一些“虚构的占位符”功能来“模拟”实现一些对象接口。在测试过程中,这些虚构的占位符对象可用简单方式来模仿对于一个组件的期望的行为和结果,从而让你专注于组件本身的彻底测试而不用担心其它依赖性问题。
Spring从J2EE的Web端为每个关键接口提供了一个mock实现:
MockHttpServletRequest—几乎每个单元测试中都要使用这个类,它是J2EE Web应用程序最常用的接口HttpServletRequest的mock实现。
MockHttpServletResponse—此对象用于HttpServletResponse接口的mock实现。
MockHttpSession—这是另外一个经常使用的mock对象(后文将讨论此类在会话绑定处理中的应用)。
DelegatingServletInputStream—这个对象用于ServletInputStream接口的mock实现。
DelegatingServletOutputStream—这个对象将代理ServletOutputStream实现。在需要拦截和分析写向一个输出流的内容时,你可以使用它。
总之,在实现你自己的测试控制器时,上面这些对象是最为有用的。然而,Spring也提供了下列相应于其它不太常用的组件的mock实现(如果你是一个底层API开发者,那么你可能会找到其各自的相应用法):
MockExpressionEvaluator—这个mock对象主要应用于你想开发并测试你自己的基于JSTL的标签库时。
MockFilterConfig—这是FilterConfig接口的一个mock实现。
MockPageC PageContext接口的一个mock实现。你会发现这个对象的使用有利于测试预编译的JSP。
MockRequestDispatcher—RequestDispatcher接口的一个mock实现,你主要在其它mock对象内使用它。
MockServletConfig—这是ServletConfig接口的一个mock实现。在单元测试某种Web组件(例如Struts框架所提供的Web组件)时,要求你设置由MockServletContext所实现的ServletConfig和ServletContext接口。
那么,我们该如何使用这些mock对象呢?我们知道,HttpServletRequest是一个持有描述HTTP参数的固定值的组件,而正是这些参数驱动Web组件的功能。MockHttpServletRequest,作为HttpServletRequest接口的一个实现,允许你设置这些不可改变的参数。在典型的Web组件测试情形下,你可以实例化这个对象并按如下方式设置其中的任何参数:
//指定表单方法和表单行为
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/main.app");
request.addParameter("choice", expanded);
request.addParameter("c "left");
同样地,你可以实例化并全面地控制和分析HttpResponse和HttpSession对象。接下来,让我们简要观察Spring所提供的特定的JUnit框架扩展。
二、JUnit框架扩展
Spring提供了下列一些特定的JUnit框架扩展:
AbstractDependencyInjectionSpringContextTests—这是一个针对所有测试的超类,其具体使用依赖于Spring上下文。
AbstractSpringContextTests—这是一个针对所有的JUnit测试情形的超类。它使用一个Spring上下文。并且,一般在测试中不是直接使用它,而是使用AbstractDependencyInjectionSpringContextTests或者AbstractTransactionalSpringContextTests这样的派生类。
AbstractTransactionalSpringContextTests—这是一个针对所有测试的超类,我们一般把它应用在事务相关的测试中。注意,一旦完成每个测试它就会正常地回滚事务;而且你需要重载onSetUpInTransaction和onTearDownInTransaction方法以便手工开始并提交事务。
AbstractTransactionalDataSourceSpringContextTests—这是AbstractTransactionalSpringContextTests的一个子类,它使用了Spring的基于JDBC的jdbcTemplate工具类。
所有上面这些扩展将极大程度地简化在测试时对于相关操作的依赖性注入和事务管理。
分享到:
评论

相关推荐

    通过spring管理的web工程的junit单元测试方法四

    通过以上方法,我们可以有效地对Spring管理的Web工程进行单元测试,确保代码的质量和稳定性。在实际开发中,结合代码审查、TDD(测试驱动开发)和CI/CD流程,将使项目更加健壮。记得在编写测试时,保持测试的简洁性...

    junit单元测试及Mock应用,超详细的PPT实战应用

    MockMVC是Spring MVC框架的一部分,用于进行RESTful风格的单元测试。它允许开发者模拟HTTP请求,测试控制器层的逻辑,而无需启动整个Web服务器。MockMVC可以帮助验证控制器处理方法的响应状态、内容和头信息,确保...

    详解Spring Boot Junit单元测试

    单元测试是软件测试中的一种测试方法,通过编写测试用例来验证代码的正确性和稳定性。在Spring Boot项目中,使用Junit框架来进行单元测试是非常常见的。 为什么要写测试用例呢?主要有三个原因: 1. 可以避免测试...

    Java_web项目中单元与集成测试.pdf

    1. **使用Spring TestContext Framework**:Spring提供了一个强大的测试框架,支持自动装配测试上下文,并允许轻松访问Spring管理的Bean。 2. **模拟HTTP请求**:利用工具如Mockito或MockMvc来模拟HTTP请求,从而...

    spring工程

    1. **依赖注入(Dependency Injection,DI)**:这是Spring的核心特性之一,它允许开发者通过外部配置来管理对象的依赖关系,降低了组件之间的耦合度,使得代码更易于测试和维护。 2. **Spring Bean**:在Spring中...

    spring3和hibernate4WEB工程

    6. **集成测试**:Spring Test和Hibernate的TestNG或JUnit结合,可以方便地进行单元测试和集成测试。通过`@ContextConfiguration`和`@Transactional`注解,可以在测试环境中轻松地启动Spring容器并管理事务。 7. **...

    Test07_Spring_Web_XML.rar

    Spring框架也支持JUnit和Mockito等工具进行单元测试,对于Spring MVC项目,Spring Test模块则提供对Web层的集成测试支持。 总结起来,“Test07_Spring_Web_XML.rar”是一个基础的Spring MVC工程模板,包含了Maven...

    Spring+SpringMVC+Mybatis 基础环境搭建工程(带测试用例)

    8. **测试用例**:工程内可能包含JUnit测试类,对Controller、Service或DAO层进行单元测试,以确保代码的功能正确无误。 通过这个基础环境搭建工程,开发者可以快速理解SSM框架的集成方式,学习如何配置和使用这些...

    Java spring boot 接口工程

    在测试方面,Spring Boot支持集成JUnit和Mockito等工具,方便进行单元测试和集成测试,确保接口的正确性。此外,通过Spring Boot的Actuator模块,可以实现健康检查、指标监控、审计日志等功能,提升系统的运维能力。...

    java maven工程 spring boot 学习源码

    - src/test/java:测试代码目录,使用JUnit或其他测试框架进行单元测试或集成测试。 - pom.xml:Maven的项目对象模型文件,定义了项目的依赖和构建过程。 通过这个学习源码,你可以学习到如何组织Spring Boot的...

    spring-json 工程依赖

    7. **测试**:使用Spring的MockMVC或JUnit进行单元测试时,可以模拟JSON请求并验证JSON响应。 理解以上知识点,并能熟练地在Eclipse环境中配置和使用这些依赖,对于开发基于Spring的JSON应用至关重要。在实际开发中...

    上传一个ssh整个的工程,方便搭建基于spring的web应用

    标题中的“上传一个ssh整个的工程”指的是分享了一个完整的基于SSH(Spring、Struts和Hibernate)框架的Web应用程序项目。SSH是Java开发中常用的三大开源框架,用于构建企业级的Web应用。Spring提供了依赖注入和面向...

    [web工程]创建web工程

    在IT行业中,Web工程是构建和管理Web应用程序的过程,它涉及到多个技术和工具的综合应用。本文将基于给定的标题“[web工程]创建web工程”来深入探讨Web工程的各个方面,以及如何从零开始创建一个Web项目。我们将不...

    Spring Boot 学习笔记完整教程.pdf

    - JUnit单元测试:集成Junit单元测试的方法和示例。 - 系统环境变量和包扫描:如何读取系统环境变量和自定义Spring Boot应用的包扫描路径。 - 依赖管理:Spring Boot通过引入spring-boot-starter-parent项目作为父...

    Spring MVC eclipse开发(Demo源码)

    Spring MVC支持JUnit进行单元测试,可以对Controller、Service、DAO等进行独立测试,确保代码质量。 13. **RESTful API设计**: Spring MVC支持创建RESTful风格的API,通过HTTP动词(GET、POST、PUT、DELETE)和...

    采用Spring+Struts2+Hibernate框架,实现一个仿天猫购物网站的web工程。.zip

    8. 编写JUnit测试用例,对业务逻辑进行单元测试。 在tmall_SSH-master这个压缩包中,我们可以期待找到以下文件和目录结构: - src/main/java:包含项目的所有Java源代码,包括实体类、DAO、Service、Action等。 - ...

    spring_hibernate工程

    Spring是一个强大的应用框架,提供了依赖注入、AOP(面向切面编程)、事务管理等核心功能,而Hibernate则是一个流行的持久层解决方案,它简化了数据库操作,通过ORM将Java对象与数据库表进行映射。 在Spring框架中...

    springboot176基于Spring Boot的装饰工程管理系统.zip

    3. src/test/java:存放测试代码,使用JUnit或Spring Test进行单元测试和集成测试。 三、数据库集成与数据访问层(DAO) Spring Boot默认支持多种数据库,如MySQL、PostgreSQL等,通过 starter-data-jpa 模块,...

    使用 XFire 与 Spring 开发 Web Service.docx

    5. **测试并访问服务**:通过JUnit测试服务,或者发布到服务器,使用SOAP客户端工具(如SoapUI)进行调用验证。 6. **利用XFire实现客户端**:XFire提供了客户端API,可以便捷地生成代理类,进行服务调用。 **扩展...

    ssh(strust2+hibernate3+spring2)整合最基本web工程

    5. **测试**:编写JUnit测试用例,验证各个层次的逻辑是否正确,确保SSH整合的工程稳定运行。 SSH整合的优点在于,Spring的IoC和AOP能力可以简化应用的结构,提高代码的可测试性和可维护性;Struts2提供了灵活的MVC...

Global site tag (gtag.js) - Google Analytics