• 单元测试最佳实战容器内测试的理解


    这里首先要明白几个基本的概念

    spring容器和springmvc容器,以及web容器的关系

    首先 springmvc和spring它俩都是容器,容器就是管理对象的地方,例如Tomcat,就是管理servlet对象的,而springMVC容器和spring容器,就是管理bean对象的地方,再说的直白点,springmvc就是管理controller对象的容器,spring就是管理service和dao的容器,这下你明白了吧。所以我们在springmvc的配置文件里配置的扫描路径就是controller的路径,而spring的配置文件里自然配的就是service和dao的路径

    代码中通过 new ClassXMLAllpiction获得的ApplicationContext对象是获得对应的是Spring的容器。不是web容器,这里要区分清楚。

    测试dao层、service层、controller层

    测试dao层的时候,需要手动准备测试数据、验证测试数据、数据库事务操作比较麻烦,手动编写单元测试代码很复杂,这个时候引入了dbUnit框架
    可以很好的帮助我们进行dao成的单元测试。

    测试业务层的单元测试时候,测试业务时候正确,这个时候为了实现和外界依赖对象的隔离,这个时候就需要引入mock框架,让mock框架模拟出
    dao对象,实现业务与外界的隔离,减少外界对单元测试的影响,仅仅保证验证业务功能的正确性,这就是通常意义上的单元测试,
    如果单元测试过程中依赖了真实的dao,这叫集成测试,但是有的书籍上也叫做集成单元测试。
    在测试的过程中对象通常不通过new UserService()的方式,而是引入Spring框架的Spring容器ApplicationContext帮助我们管理单元测试对象,
    这个时候引入了Spring TestContext框架

    在测试controller层的时候,需要要使用到HttpRequets、httpReponse等对象,这个时候可以使用mock框架模拟这些具体的对象,
    ,如Spring MockMvc,它模拟了真实的web容器,可以向单元测试提供HttpRequets、httpReponse等对象,

    SpringMVC测试框架

    基于RESTful风格的SpringMVC的测试,我们可以测试完整的Spring MVC流程,即从URL请求到控制器处理,再到视图渲染都可以测试。

    一 MockMvcBuilder

    MockMvcBuilder是用来构造MockMvc的构造器,其主要有两个实现:StandaloneMockMvcBuilder和DefaultMockMvcBuilder,分别对应两种测试方式,即独立安装和集成Web环境测试(此种方式并不会集成真正的web环境,而是通过相应的Mock API进行模拟测试,无须启动服务器)。对于我们来说直接使用静态工厂MockMvcBuilders创建即可。

    mckMVC没有启动真正的web服务器:这就是容器外的测试

    如何启动了web服务器,使用如果通过启动服务器,建立http client进行测试,例如,服务器部署在tomcat中,编写android客户端使用http client进行测试接口访问,这就是真正的容器内测试,

    这里就区分了容器内测试和容器外测试的区别

    1. 为Controller编写测试,不需要应用服务器环境
    2. 为Service编写测试,不需要应用服务器环境

    Spring为我们提供了一个测试套件Spring-test,与JUnit结合,可以在运行测试时启动IoC容器测试Service,数据库,也可以在脱离web容器的环境下模拟http请求测试Controller,甚是给力。

    cactus进行容器内测试,需要将war运行在具体的容器中,这就是容器内单元测试

  • 相关阅读:
    杨辉三角
    100以内的素数
    九九
    MyDate
    计算器
    100以内素数
    杨辉三角形
    九九乘法表
    窗口关闭事件
    计算器界面
  • 原文地址:https://www.cnblogs.com/kebibuluan/p/9533617.html
Copyright © 2020-2023  润新知