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集成测试(准备数据和验证项的外部文件化),布布扣,bubuko.com

时间: 2024-10-18 17:40:08

spring+xml集成测试(准备数据和验证项的外部文件化)的相关文章

3.spring:自动装配/Bean之间的关系/作用域/外部文件/spel/

1.自动装配/手动装配 xml配置文件里的bean自动装配 Spring IOC 容器里可以自动的装配Bean,需要做的仅仅是在<bean>的autowire属性里面指定自动装配模式 ->byType(根据类型自动进行装配):若IOC容器里需要有多个与目标Bean类型一样的Bean,在这种情况子下,Spring无法判定那个Bean合适,所以不能执行自动装配 ->byName(根据名称自动装配):必须将目标Bean的名称和属性名设置完全相同, ->constuuctor(通过是

spring 4.0 注解数据验证2

在spring 4.0 注解数据验证1中有基本的数据验证方法.还是那个POJO: package com.suyin.pojo; import java.lang.reflect.Field; import org.hibernate.validator.constraints.NotBlank; public class People { private int id; @NotBlank private String name; private String address; private

Spring整合Redis做数据缓存(Windows环境)

当我们一个项目的数据量很大的时候,就需要做一些缓存机制来减轻数据库的压力,提升应用程序的性能,对于java项目来说,最常用的缓存组件有Redis.Ehcache和Memcached. Ehcache是用java开发的缓存组件,和java结合良好,直接在jvm虚拟机中运行,不需要额外安装什么东西,效率也很高:但是由于和java结合的太紧密了,导致缓存共享麻烦,分布式集群应用不方便,所以比较适合单个部署的应用. Redis需要额外单独安装,是通过socket访问到缓存服务,效率比Ehcache低,但

使用纯Java配置SSM框架实现基本的增删改查(不使用spring XML)

前言 本文不使用spring XML,而是采用Java配置SSM框架的形式实现了基本的增删改查. 本文中的源码继承自https://www.cnblogs.com/hanzx/p/10016468.html中的程序,删除掉了webapp文件夹,里面的模板全部转移到resources下,其余文件均已删除. 核心框架已升级.spring系列已升级使用5.0.1,mybatis使用3.4.5,mybatis-spring使用1.3.1. 名词解释 SSM框架:springMVC.spring.myba

myeclipse中配置spring xml自动提示

这是一篇分享技巧的文章:myeclipse中配置spring xml自动提示. ① window -> preferences -> MyEclipse -> Files and Editors -> XML -> XML Catalog ② 选择User Specified Entries,点击add按钮弹出一个选框,填入以下三项 i. Location: D:\baiduyun\Spring\spring_doc\soft\spring-framework-2.5.6\d

我也来学着写写WINDOWS服务-解析xml抓取数据并插入数据库

项目告一段落,快到一年时间开发了两个系统,一个客户已经在试用,一个进入客户测试阶段,中间突然被项目经理(更喜欢叫他W工)分派一个每隔两小时用windows服务去抓取客户提供的外网xml,解析该xml,然后将截取的节点字段值插入到已经建好相应结构的表中.并记录日志. xml结构概要如下: <?xml version="1.0" encoding="UTF-8"?> <list> <info> <id>93ef7c7ccc

spring.xml及注解

spring.xml配置文件中配置注解: 开启注解(及自动扫描包中bean): 1:<context:component-scan base-package="com.bzu" />    在base-packge指定所需要扫描的包,建议指定一个包含整个架构的包,可以扫描到各层所定义的bean; 或2:<context:annotation-config />   2种方法选一; 引入外部properties文件,常为数据库连接配置文件; 1:<bean

Spring绑定表单数据

Spring提供了一些jsp页面常用的form标签,很大程度上提高了我们开发的速度,不用再一个个的标签去绑定属性,而且后台接收数据也很简单,可以直接接收object对象作为属性.官方form标签介绍的网址为http://docs.spring.io/spring/docs/4.2.6.RELEASE/spring-framework-reference/htmlsingle/#spring-form-tld.包含以下的标签: 在jsp页面使用spring提供的标签需要引入相关的taglib:<%

Spring MVC&Spring Data JPA过滤数据的另一种API

这就是我滚动的方式2014年3月23日在春天mvc | 规格 | 春季资料 | jpa | 参数解析器 | java | 搜索 | 搜索 | 滤波 Spring MVC&Spring Data JPA过滤数据的另一种API 更新 自从我写这篇文章以来已经有一段时间了.我仍然认为它值得阅读,但请务必检查Github页面,因为所描述的库已经发展,并已成为Maven Central中的一个完整的开源项目. 我坚信,一个卓越的框架最终会成为一种(领域特定的)语言. 我已经使用了Spring MVC好几年