spring+xml集成测试(准备数据和验证项的外部文件化)
Spring的集成测试
单位测试和集成测试,我想大家都做过,一般情况下,一般逻辑且不需要操作数据库的情况比较适合于单位测试了。而对于一个数据库应用来说,集成测试可能比单元测试更重要,你可以想象,一个互联网应用,不是增修数据,就是查询数据了,那么验证操作在数据记录上的影响就更为需要。如果在的应用中使用了spring,那么就可以利用spring集成测试框架了,其实它所做的工作就是加载配置文件并配置其中相关的信息,其中也包括数据源等,其次在验证完成之后,回滚对数据表的操纵,当然你也可以手动的设置为不回滚,总之,spring的测试框架大大简化集成测试所要做的工作。
我的问题
spring解决了我们集成测试当中的大部分问题,但是在有些情况下,还是非常的麻烦,主要在两个方面无法减少测试的工作量,一是准备测试数据(先于测试插入数据表中的数据),可能针对于一个功能的一种场景的测试,准备的测试数据可能就涉及到十几,几十张表,数据记录就达到几十,几百条。其二,需要验证的数据项非常多(验证操作在数据记录上的影响),你可能需要验证十几张,几十张表中的若干个字段的数据正确性,所以,在这种情况下,一个功能一个分支的测试就可能涉及到上百行代码,可以想象,要是这个功能多几个分支,测试代码迅速膨胀,而且这样的代码还需要维护(要知道测试的代码也是需要维护了,极有可能因为表结构或者程序逻辑发生的变化而需要变更测试代码) ,那么遇到这样的情况,有什么办法呢?
我的解决方法
针对上面的测试窘境,主要是要解决两个方面的问题,第一,准备测试数据;第二,验证数据项。其实这样两个问题归为一个问题就准备数据和验证项太多了,导致测试代码膨胀,解决这个问题的办法就是把准备测试数据和验证项都放到外部文件中去,比如xml文件了,请看下面的xml文件:
- <?xml version="1.0" encoding="UTF-8"?>
- <suite>
- <case enable="true">
- <desc>测试用例描叙</desc>
- <init>
- <insert>初始化SQL</insert>
- <insert>初始化SQL</insert>
- </init>
- <assert>
- <select>查询SQL</select>
- <props>
- <prop key="查询SQL的选择列">期望值</prop>
- <prop key="查询SQL的选择列">期望值</prop>
- </props>
- </assert>
- </case>
- </suite>
我们把测试的初始化脚本,断言的SQL以及期望值都放在xml文件中,其中case代表功能的一个逻辑分支。如果这些东西都放在外部文件的时候,那么测试就只剩下了三步:第一步,读取xml文件;第二步,调用需要测试功能;第三步,调用断言方法,这就是需要我们的测试代码了,其中第一步和第三步都是所有测试方法所共有,这样是不是大大简化的代码量呢,另外由于初始化脚本,断言SQL,期望值都放在外部文件中,就更便于测试代码的维护了。
你认为我的方法如何呢?你有没有更好的方法,欢迎各位给出你的意见。
spring+xml集成测试(准备数据和验证项的外部文件化)的更多相关文章
- 3.spring:自动装配/Bean之间的关系/作用域/外部文件/spel/
1.自动装配/手动装配 xml配置文件里的bean自动装配 Spring IOC 容器里可以自动的装配Bean,需要做的仅仅是在<bean>的autowire属性里面指定自动装配模式 -& ...
- spring 4.0 注解数据验证2
在spring 4.0 注解数据验证1中有基本的数据验证方法.还是那个POJO: package com.suyin.pojo; import java.lang.reflect.Field; imp ...
- Spring绑定表单数据
Spring提供了一些jsp页面常用的form标签,很大程度上提高了我们开发的速度,不用再一个个的标签去绑定属性,而且后台接收数据也很简单,可以直接接收object对象作为属性.官方form标签介绍的 ...
- 在Spring Boot中使用数据缓存
春节就要到了,在回家之前要赶快把今年欠下的技术债还清.so,今天继续.Spring Boot前面已经预热了n篇博客了,今天我们来继续看如何在Spring Boot中解决数据缓存问题.本篇博客是以初识在 ...
- myeclipse中配置spring xml自己主动提示
版权声明: https://blog.csdn.net/zdp072/article/details/24582173 这是一篇分享技巧的文章:myeclipse中配置spring xml自己主动提示 ...
- spring xml的配置
Spring xml文档头得配置 spring文档头一般是可以复制过来得,刚学习得时候一直看网上有没有配置,然后也没有找到,希望以下过程得学习可以给大家带来帮助!! 1 ...
- Spring Boot返回json数据及完美使用FastJson解析Json数据
Spring Boot返回json数据 视频地址:http://www.iqiyi.com/w_19rubxzsr5.html 博文参考:https://blog.csdn.net/linxingl ...
- spring xml properties split with comma for list
在注入spring bean 属性值的时候常常会用到list, 一般使用方式例如以下: <bean id="testBean" class="com.mytest. ...
- Spring.NET的中间数据层(Middle Tier Data Access)——事务管理(Transaction management)
简介 Spring.NET为事务管理提供了一个持久化抽象(consistent abstraction ),其优点如下: 为不同事务API,例如ADO.NET,Enterprise Services, ...
随机推荐
- geoWithin查询 多边形查询
$geoWithin查询 形状的表示 .$box:矩形,使用 {$box:[[<x1>,<y1>],[<x2>,<y2>]]}表示 都是坐标,第一个坐标 ...
- 版本管理工具-SourceSafe
一.什么是SourceSafe SourceSafe是Micrsoft公司推出的一款支持团队协同开发的配置管理工具,是Visual Studio的套件之一.因为其短小精悍,又继承了微软集成销售的一贯作 ...
- SqlServer2000事件探测器的使用
由于公司自己开发的项目,需要与第三方软件数据库对接.我们项目用的数据库是MySQL而第三方用的是sqlserver2000.项目框架用的thinkphp5.0,通过thinkPHP新建一个模块,单独连 ...
- Java Web Application使Session永不失效(利用cookie隐藏登录)
在做 Web Application 时,因为 Web Project 有 session 自动失效的问题,所以如何让用户登录一次系统就能长时间运行三个月,就是个问题. 后来,看到 session 失 ...
- Angular2的笔记
1.如果启动项目的时候出现下列黄色的警告说明电脑安装的全局cli和项目中使用的cli版本不一致,不过不影响使用,按它的提示执行 ng set --global warnings.versionMism ...
- swiper动画效果
参考swiper官方网站:http://www.swiper.com.cn/ Swiper常用于移动端网站的内容触摸滑动: 结构展示: 纯javascript打造的滑动特效插件,面向手机.平板电脑 ...
- SummerVocation_Learning--java的String类方法总结
壹: public char charAt(int index),返回字符串中第index个字符. public int length(), 返回字符串长度. public int indexOf(S ...
- 济南NOIP冬令营 选拔(select)
选拔(select) Time Limit:2000ms Memory Limit:128MB 题目描述 LYK对n个女生有好感.第i个女生的身高为ai. LYK要在这些女生中选拔出一个女生来作为 ...
- php中处理字符串的常见函数
编写程序的时候,经常要处理字符串,最基本就是字符串的查找,在php检测字符串中是否包含指定字符串可以使用正则,如果你对正则不了解,那么有几个函数可以为您提供方便. 1. strstr strstr() ...
- 7款公认比较出色的Python IDE,你值得拥有!
Python作为一款比较“简洁”的编程语言,它拥有很多性价比高的性能,造就了它现在比较火热的局面,很多人都来学习Python.Python 的学习过程少不了 IDE 或者代码编辑器,或者集成的开发编辑 ...