Unitils概述


Unitils测试框架目的是让单元测试变得更加容易和可维护。Unitils构建在DbUnit与EasyMock项目之上并与JUnit和TestNG相结合。支持数据库测试,支持利用Mock对象进行测试并提供与Spring和Hibernate相集成。Unitils设计成以一种高度可配置和松散耦合的方式来添加这些服务到单元测试中,目前其最新版本是3.1。


Unitils功能特点


自动维护和强制关闭单元测试数据库(支持Oracle、Hsqldb、MySQL、DB2)。


简化单元测试数据库连接的设置。


简化利用DbUnit测试数据的插入。


简化Hibernate session管理。


自动测试与数据库相映射的Hibernate映射对象。


易于把Spring管理的Bean注入到单元测试中,支持在单元测试中使用Spring容器中的Hibernate SessionFactory。


简化EasyMock Mock对象创建。


简化Mock对象注入,利用反射等式匹配EasyMock参数。


Unitils模块组件


Unitils通过模块化的方式来组织各个功能模块,采用类似于Spring的模块划分方式,如unitils-core、unitils-database、unitils-mock等。比以前整合在一个工程里面显得更加清晰,目前所有模块如下所示:


unitils-core:核心内核包。


unitils-database:维护测试数据库及连接池。


unitils-DbUnit:使用DbUnit来管理测试数据。


unitils-easymock:支持创建Mock和宽松的反射参数匹配。


unitils-inject:支持在一个对象中注入另一个对象。


unitils-mock:整合各种Mock,在Mock的使用语法上进行了简化。


unitils-orm:支持Hibernate、JPA的配置和自动数据库映射检查。


unitils-spring:支持加载Spring的上下文配置,并检索和Spring Bean注入。


Unitils的核心架构中包含Moudule和TestListener两个概念,类似Spring中黏连其他开源软件中的FactoryBean概念。可以看成第三方测试工具的一个黏合剂。


通过TestListener可以在测试运行的不同阶段注入某些功能。同时某一个TestListener又被一个对应的Module所持有。Unitils也可以看成一个插件体系结构,TestListener在整个Unitils中又充当了插件中扩展点的角色,从TestListener这个接口中我们可以看到,它可以在crateTestObject、before(after)Class、before(after)TestMethod、beforeSetup、afterTeardown的不同切入点添加不同的动作。


Unitils配置文件


unitils-defaults.properties:默认配置文件,开启所有功能。


unitils.properties:项目级配置文件,用于项目通用属性配置。


unitils-local.properties:用户级配置文件,用于个人特殊属性配置。


Unitils的配置定义了一般配置文件的名字unitils.properties和用户自定义配置文件unitils-local.properties,并给出了默认的模块及模块对应的className,便于Unitils加载对应的模块module。但是如果用户分别在unitils.properties文件及unitils -local.properties文件中对相同属性配置不同值时,将会以unitils-local.properties 的配置内容为主。


Unitils断言


典型的单元测试一般都包含一个重要的组成部分:对比实际产生的结果和希望的结果是否一致的方法,即断言方法(assertEquals)。Unitils 为我们提供了一个非常实用的断言方法,我们以第2章中编写的用户领域对象User为蓝本,比较两个User对象的实例来开始认识Unitils的断言之旅。


assertReflectionEquals:反射断言


在Java世界中,要比较现有两个对象实例是否相等,如果类没有重写equals()方法,用两个对象的引用是否一致作为判断依据。有时候,我们并不需要关注两个对象是否引用同一个对象,只要两个对象的属性值一样就可以了。在JUnit单元测试中,有两种测试方式进行这样的场景测试:一是在比较实体类中重写equals()方法,然后进行对象比较;二是把对象实例的属性一个一个进行比较。不管采用哪种方法,都比较烦锁,Unitils为我们提供了一种非常简单的方法,即使用ReflectionAssert.assertReflectionEquals方法, 如代码清单16-11所示:


代码清单16 11  assertReflectionEquals 反射断言测试 

package com.baobaotao.test;  
import java.util.*;  
import org.junit.Test;  
import static org.unitils.reflectionassert.ReflectionAssert.*;  
import static org.unitils.reflectionassert.ReflectionComparatorMode.*;  
import com.baobaotao.domain.User;  
 
public class AssertReflectionEqualsTest {  
    @Test  
    public void testReflection(){  
        User user1 = new User("tom","1234");  
        User user2 = new User("tom","1234");  
        ReflectionAssert.assertReflectionEquals(user1, user2);  
    }  
 
}  
 

 

 

 

ReflectionAssert. AssertReflectionEquals(期望值,实际值,比较级别)方法为我们提供了各种级别的比较断言。下面我们依次介绍这些级别的比较断言。


ReflectionComparatorMode.LENIENT_ORDER:忽略要断言集合collection 或者array 中元素的顺序。


ReflectionComparatorMode.IGNORE_DEFAULTS:忽略Java类型默认值,如引用类型为null,整型类型为0,或者布尔类型为false时,那么断言忽略这些值的比较。


ReflectionComparatorMode.LENIENT_DATES:比较两个实例的Date是不是都被设置了值或者都为null,而忽略Date的值是否相等。


assertLenientEquals:断言


ReflectionAssert 类为我们提供了两种比较断言:既忽略顺序又忽略默认值的断言assertLenientEquals,使用这种断言就可以进行简单比较。下面通过实例学习其具体的用法,如代码清单16-12所示。


代码清单16 12  assertLenientEquals断言测试

package com.baobaotao.test;  
import java.util.*;  
…  
public class AssertReflectionEqualsTest {  
      Integer orderList1[] = new Integer[]{1,2,3};  
      Integer orderList2[] = new Integer[]{3,2,1};  
 
          
        //① 测试两个数组的值是否相等,忽略顺序  
        //assertReflectionEquals(orderList1, orderList2,LENIENT_ORDER);  
        assertLenientEquals(orderList1, orderList2);  
 
          
        //② 测试两个对象的值是否相等,忽略时间值是否相等  
        User user1 = new User("tom","1234");  
        Calendar cal1 = Calendar.getInstance();  
        user1.setLastVisit(cal1.getTime());  
        User user2 = new User("tom","1234");  
        Calendar cal2 = Calendar.getInstance();  
        cal2.set(Calendar.DATE, 15);  
        user2.setLastVisit(cal2.getTime());  
        //assertReflectionEquals(user1, user2,LENIENT_DATES);  
        assertLenientEquals(user1, user2);  
}  

  

 

 

 

assertPropertyXxxEquals:属性断言


assertLenientEquals 和assertReflectionEquals 这两个方法是把对象作为整体进行比较,ReflectionAssert 类还给我们提供了只比较对象特定属性的方法:assertPropertyReflection   Equals()和assertPropertyLenientEquals()。下面通过实例学习其具体的用法,如代码清单16-13所示。


代码清单16 13  assertPropertyXxxEquals属性断言

package com.baobaotao.test;  
import java.util.*;  
…  
public class AssertReflectionEqualsTest {  
      User user = new User("tom","1234");  
      assertPropertyReflectionEquals("userName", "tom", user);  
      assertPropertyLenientEquals("lastVisit", null, user);  
} 
 

 assertPropertyReflectionEquals()断言是默认严格比较模式但是可以手动设置比较级别的断言,assertPropertyLenientEquals()断言是具有忽略顺序和忽略默认值的断言。

 

 

 

Unitils教程(介绍Unitils的最佳资料) Unitils源于尝试更加务实的单元测试,它始于一套测试准则,并为了方便应用这些准则而开发了一个开源代码库。 立即下载

相关推荐

Unitils单元测试

详细介绍了Unitils的实用方法和步骤

unitils 测试框架介绍(一)

Junit 是用于自动化测试Java代码的框架,而Unitils是测试整合之王,目的是 让单元测试更加容易和可维护,Unitils构建在DbUnit与EasyMock 项目之上并与JUnit和TestNG相结合,支持数据库测试,支持利用Mock对象进行测试并提供与Spring和Hibernate相集成。Unitils模块组件有一下组成: 1、unitils-core: 核心内核包 2、unitils-dat...

lgxzzz的博客 587

Windows环境下DataEase一站式安装指南(含WSL2+Docker配置)

本文详细介绍了在Windows环境下通过WSL2和Docker快速部署DataEase的完整教程。从WSL2配置、Docker环境搭建到DataEase离线安装,逐步指导用户完成一站式部署,特别适合需要快速搭建数据分析平台的开发者。教程包含常见问题解决方案和性能优化技巧,帮助用户高效使用这款国产开源数据可视化工具。

weixin_42526166的博客 396

测试整合之王Unitils(单元测试系列)

引述:程序测试对保障应用程序正确性而言,其重要性怎么样强调都不为过。JUnit是必须事先掌握的测试框架,大多数测试框架和测试工具都在此基础上扩展而来,Spring对测试所提供的帮助类也是在JUnit的基础上进行演化的。直接使用JUnit测试基于Spring的应用存在诸多不便,不可避免地需要将大量的精力用于应付测试夹具准备、测试现场恢复、访问测试数据操作结果等边缘性的工作中。Mockito、Unit

tony的专栏 5919

Spring Boot 微服务 API 网关实战:Spring Cloud Gateway 整合,搞定路由转发 + 统一认证 + 限流熔断(企业级落地)

摘要:本文详细介绍了SpringCloud Gateway在微服务架构中的核心作用与实现方案。作为API网关,它解决了服务入口分散、认证冗余、流量失控等痛点,提供路由转发、统一认证、限流熔断等能力。文章通过图书管理系统案例,演示了SpringBoot整合Gateway的全流程,包括基础路由配置、JWT全局认证、局部参数校验、Sentinel限流熔断以及Nacos动态路由等核心功能实现。特别强调了企业级落地中的关键注意事项,如路由顺序、过滤器执行顺序、HTTPS配置等。该方案能有效构建统一、安全、高效的微服务

lamehsl的专栏 1381

Vivado里LDPC IP核怎么配?手把手教你从6144bit数据到完整参数设置

本文详细介绍了在Vivado中配置LDPC IP核的完整流程,从6144bit数据的参数计算到实际IP核设置。通过分析基本图选择、扩展因子计算和移位参数确定等关键步骤,帮助工程师高效完成LDPC编译码的硬件实现,并提供了时序控制、仿真验证和性能优化的实用技巧。

weixin_30352645的博客 518

Unitils-使用实践

简介 Unitils这个Java开源类包的目的是让单元测试变得更加容易和可维护。Unitils构建在DBUnit与EasyMock项目之上并与JUnit和TestNG相结合。支持数据库测试,支持利用mock对象进行测试并提供与Spring和Hibernate相集成。Unitils设计成以一种高度可配置和松散偶合的方式来添加这些服务到单元测试中。 我们设计的测试实践大体如下: JUnit4 进行单元测试 EasyMock 构造对象 DBUnit 进行数据库的管理 Unitils 进行整合 Uni

lgxzzz的博客 452

精密装配机器人系列编程:ABB IRB 120_(20).编程项目设计与实施

在精密装配机器人系列编程中,项目的成功设计与实施涉及多个关键步骤。从项目需求分析到最终调试,每一个环节都需要细致的考虑和专业的技术。选择合适的编程语言、设计良好的程序结构、掌握调试技巧以及解决常见问题,都是确保机器人高效、稳定运行的重要因素。通过不断优化和改进,可以提高生产效率和产品质量,满足不断变化的生产需求。

zhubeibei168的博客 1243

Unitils的简单实用

为什么80%的码农都做不了架构师?>>> ...

weixin_33862514的博客 267

sas协议(SAS PL-3)之Zoning功能

1 Zoning overview SAS zoning is implemented by a set of zoning expander devices with zoning enabled that define a zoned portion of a service delivery subsystem (ZPSDS)服务子系统. The zoning expander devices control whether a phy is permitted to participate in

sinat_37817094的博客 1530

【FISCO-BCOS】十一、一键部署

一键部署包括以下服务:节点(FISCO-BCOS 2.0+)、管理平台(WeBASE-Web)、节点管理子系统(WeBASE-Node-Manager)、节点前置子系统(WeBASE-Front)、签名服务(WeBASE-Sign)。部署成功后,登录此网站:http://localhost:5000 访问WeBASE管理平台。快速搭建WeBASE管理台环境,方便用户快速体验WeBASE管理平台。修改节点管理子系统和签名服务组系统的mysql数据库配置。如使用root账户:改为。配置方法:参考如下指令。

naihe_fish的博客 2596

单元测试工具 unitils

Unitils模块组件 Unitils通过模块化的方式来组织各个功能模块,采用类似于Spring的模块划分方式,如unitils-core、unitils-database、unitils-mock等。比以前整合在一个工程里面显得更加清晰,目前所有模块如下所示:  unitils-core:核心内核包。  unitils-database:维护测试数据库及连接池。...

as122343的博客 276

IEC61850规约客户端软件开发实战(第二章)

本文介绍了基于IEC61850规约的客户端软件开发过程,重点阐述功能界面设计和服务端连接功能的实现。界面采用Qt框架设计,包含功能按钮区、数据模型展示区(使用QTreeWidget)和状态显示区。连接功能通过libiec61850开源库实现,详细说明了连接流程、句柄创建及状态管理的代码实现。测试结果表明系统能正确识别连接状态,并通过界面直观显示。文章为IEC61850规约软件开发提供了实用参考,下期将分享规约模型数据加载的实现过程。

半青年的博客 2858

单元测试三叉戟—JUNIT,DBUNIT,UNITILS

在Java单元测试领域,JUNIT一直各位开发人员和测试人员的最佳选择,它不仅提供了很多标准的API,同时很多IDE也对它提供了运行环境支持。特别是JUNIT4以后,引入了Java annotation的方式,进一步规范了测试脚本的结构,使测试脚本在原有的框架下更加灵活。DBUNIT是一款基于JAVA的数据库维护工具,让在单元测试中使数据库中的数据维护透明化成为可能。UNITILS是一

phphot 3037

实战六十四:基于机器学习朴素贝叶斯的豆瓣Top250影评的情感分析与预测 附完整源码和数据

实战六十四:基于机器学习朴素贝叶斯的豆瓣Top250影评的情感分析与预测 附完整源码和数据

1563

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Unitils配置文件(Unitils介绍四)

 Unitils可以有三层配置文件,从内到处以次为unitils-defaults.properties: 默认配置文件,内置,开启所有功能。unitils.properties:    配置项目级的属性, 项目共通配置unitils-local.properties:配置用户级的属性,个人的特殊配置  举个例子   unitils.properties 文件内容:databa

hu_hu_hu的专栏 1424

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Unitils

官网:http://www.unitils.org/summary.html 需要好好看看

ziwuzu的博客 131

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

单元测试JUNIT DBUNIT UNITILS

在Java单元测试领域,JUNIT一直各位开发人员和测试人员的最佳选择,它不仅提供了很多标准的API,同时很多IDE也对它提供了运行环境支持。特别是JUNIT4以后,引入了Java annotation的方式,进一步规范了测试脚本的结构,使测试脚本在原有的框架下更加灵活。 DBUNIT是一款基于JAVA的数据库维护工具,让在单元测试中使数据库中的数据维护透明化成为可能。 UNITILS是一款单...

奋斗 219

Unitils介绍(一)

<span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">关于Unitils<span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-

hu_hu_hu的专栏 1139

[Unitils]初识Unitils

http://www.unitils.org/summary.html# Summary Unitils is an open source library aimed at making unit and integration testing easy and maintainable. It is divided into several modules, each of th...

自娱《测试开发》专栏 163

Unitils单元测试框架

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...

bingzhijisi的博客 657

测试整合之王Unitils

16.4.1  Unitils概述(1) Unitils测试框架目的是让单元测试变得更加容易和可维护。Unitils构建在DbUnit与EasyMock项目之上并与JUnit和TestNG相结合。支持数据库测试,支持利用Mock对象进行测试并提供与Spring和Hibernate相集成。Unitils设计成以一种高度可配置和松散耦合的方式来添加这些服务到单元测试中,目前其最新版本是3.1。 Uni...

weixin_34221332的博客 131

Unitils集成

    集成Spring Unitils 提供了一些在Spring 框架下进行单元测试的特性。Spring 的一个基本特性就是,类要设计成为没有Spring 容器或者在其他容器下仍然易于进行单元测试。但是很多时候在Spring 容器下进行测试还是非常有用的。 Unitils 提供了以下支持 Spring 的特性: ApplicationContext 配置的管理; 在单元测试代码中...

gufengjava的专栏 155

unitils学习1一Unitils基础简介

转自:点击打开链接 http://stamen.iteye.com/blog/1480316 引述:程序测试对保障应用程序正确性而言,其重要性怎么样强调都不为过。JUnit是必须事先掌握的测试框架,大多数测试框架和测试工具都在此基础上扩展而来,Spring对测试所提供的帮助类也是在JUnit的基础上进行演化的。直接使用JUnit测试基于Spring的应用存在诸多不便,不可避免地需要将大量的精力用

eagle199012的专栏 743
上一篇: 模拟测试概述
下一篇: Unitils集成
gufengjava
博客等级 码龄16年 1粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值