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

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

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运行在具体的容器中,这就是容器内单元测试

 

posted on   luzhouxiaoshuai  阅读(436)  评论(0编辑  收藏  举报

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示