单元测试利器之Jtester
http://kiral.iteye.com/blog/900975
名词解释:
- Junit:众所周知的单元测试。 官方网址:http://junit.sourceforge.net/。Junit从4.0开始提供基于注解的配置方式。
- Dbunit: 一个针对数据库测试的框架,通过Excel准备数据并插入数据库。官方地址:http://www.dbunit.org/
- TestNG:从字面上可以理解为下一代单元测试,和Junit的功能有一部分重叠和区别。TestNG也有Eclipse插件,官方地址http://testng.org/doc/index.html
- Unitiles: 让单元测试变得更加容易和可维护,Unitils构建在DBUnit之上并与JUnit和TestNG相结合。官方地址:http://www.unitils.org
- Jmock:JMock是一个JAVA开发包,它支持Mock(模拟)对象机制的TDD(测试驱动开发),官方地址:http://www.jmock.org/
什么是Jtester?
jTester是一个基于java的单元测试框架。开源地址:http://code.google.com/p/java-tester/。
为什么要用Jtester?
JTester是站在众多巨人肩膀上的单元测试框架,集成了Junit4.5,dbunit2.4.3,unitils2.2,JMOCK2.5和TestNg5.1这些优秀的开源框架,并在这些框架上做了扩展,使得单元测试更加方便和强大。
Jtester带给了我们什么?
1、在unitils的基础,集成了jmock功能。
2、在hamcrest断言的基础上,实现了fluent interface断言。
3、改造了jmock expectation参数断言为fluent interface形式
4、录制对象:提供了将普通的pojo对象序列化到文件,然后再从文件中反序列化回来的功能,用于在对象复杂的情况下,直接录制接口(远程接口)调用返回的对象,以供下次测试或调试使用。
5、数据测试:使用wiki代替xml来准备测试数据。比dbunit更快准备数据。
6、实现了更加丰富的断言。比junit的断言多。
7、提供了hibernate annotation环境下,直接使用内存数据库进行db测试。
8、提供了hibernate annotation环境下,Open Test in Session的实现。
以上8大特性来自于官方,我稍加了点说明和整理。
七步进入Jtester世界。 下面让我们花一个泡面的时间来学习下Jtester吧。
- import mockit.NonStrict;
- import org.jtester.testng.JTester;
- import org.jtester.unitils.jmockit.MockedBean;
- import org.testng.annotations.Test;
- import org.unitils.spring.annotation.SpringApplicationContext;
- import org.unitils.spring.annotation.SpringBean;
- /**
- * Jtester测试例子,按照注释顺序学习
- *
- * @author tengfei.fangtf
- */
- @SpringApplicationContext( { "applicationContext.xml" })
- // 1.@SpringApplicationContext:加载Spring 配置文件,所有测试相关的bean都在这个容器中;
- public class BusinessTestCase extends JTester// 2.JTester:要使用JTester
- // 提供的功能,需要继承此基类;
- {
- @SpringBean("businessService")
- // 3.@SpringBean:从容器中取出指定id 的bean 并注入到测试类中
- private AppInternalService businessService;
- @MockedBean
- @NonStrict
- // 4.@Mocked @MockedBean:mock 出一个对象,并将该对象与Spring 容器结合,实现Autowired;
- private OneHessianServiceClient hessianClient;
- @Test(groups = { "FirstTestGroup" })
- // 5.@Test;TestNG 的注解;指明此方法为一个TestCase;
- public void testBusinessNormal() {
- new Expectations() {// 6.设置mock 对象的期望返回值
- {
- hessianClient.hessianServiceInvorke(anyString);
- result = "HH";// 那么执行这个方法,永远都返回HH
- }
- };
- String returnResult = businessService
- .bussinessService("Sample Business!");
- System.out.println("\n ---> " + returnResult);// 输出HH
- want.string(returnResult).notNull();// want:JTester 框架提供的强大的断言;
- }
- }
单元测试利器之Jtester的更多相关文章
- Win下必备利器之Cmder
诚言,对于开发码字者,Mac和Linux果断要比Windows更贴心;但只要折腾下,Windows下也是有不少利器的.之前就有在Windows下效率必备软件一文中对此做了下记载:其虽没oh-my-zs ...
- C#编程利器之二:结构与枚举(Structure and enumeration)【转】
C#编程利器之二:结构与枚举(Structure and enumeration) 在上一篇文章中,介绍了类如何封装程序中的对象.而实际中,出了类可以封装对象外,结构和枚举也可以封装一些对象,本文将着 ...
- 大数据并行计算利器之MPI/OpenMP
大数据集群计算利器之MPI/OpenMP ---以连通域标记算法并行化为例 1 背景 图像连通域标记算法是从一幅栅格图像(通常为二值图像)中,将互相邻接(4邻接或8邻接)的具有非背景值的像素集合提取出 ...
- php调试利器之phpdbg
信海龙的博客 php调试利器之phpdbg 简介 PHPDBG是一个PHP的SAPI模块,可以在不用修改代码和不影响性能的情况下控制PHP的运行环境. PHPDBG的目标是成为一个轻量级.强大.易用的 ...
- 后台任务利器之Hangfire
后台任务利器之Hangfire 一.简述 Hangfire作为一款高人气且容易上手的分布式后台执行服务,支持多种数据库.在.net core的环境中,由Core自带的DI管理着生命周期,免去了在NF4 ...
- Android开发利器之ActivityTracker
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/113 Android开发利器之ActivityTracke ...
- windows管理员利器之用Log Parser Studio分析IIS日志(附逐浪CMS官方命令集)
原文:windows管理员利器之用Log Parser Studio分析IIS日志(附逐浪CMS官方命令集) Log Parser Studio是一个强大的IIS图形分析工具,值得推荐. 1. 安装L ...
- .NET Core开源组件:后台任务利器之Hangfire 转载 https://www.cnblogs.com/chenug/p/6655636.html
.NET Core开源组件:后台任务利器之Hangfire 一.简述 Hangfire作为一款高人气且容易上手的分布式后台执行服务,支持多种数据库.在.net core的环境中,由Core自带的D ...
- Java高并发编程基础三大利器之CountDownLatch
引言 上一篇文章我们介绍了AQS的信号量Semaphore<Java高并发编程基础三大利器之Semaphore>,接下来应该轮到CountDownLatch了. 什么是CountDownL ...
随机推荐
- OpenJudge就算概论-最长单词2【寻找句子内部最长的单词】
/*===================================== 最长单词2 总时间限制: 1000ms 内存限制: 65536kB 描述 一个以'.'结尾的简单英文句子,单词之间用空格 ...
- XMLHttpRequest 对象
XMLHttpRequest 对象 XML XSLTXML 解析器XMLHttpRequest 对象用于在后台与服务器交换数据. 什么是 XMLHttpRequest 对象? XMLHttpReque ...
- select跳转
<select onchange="window.open(this.options[this.selectedIndex].value)"><option> ...
- JSP下拉选框,级联选择
前端: <%@ page contentType="text/html;charset=UTF-8" %> <!DOCTYPE html PUBLIC " ...
- mootools里选择器$,$$,$E,$ES等的区别
区别就是 $和$$都是1个参数, $适用于ID,或者ID代表的对象 $$适用于CSS选择器 $E和$ES,有2个参数,第二个参数是可选参数代表(filter,即某个ID范围里的元素) $E('inpu ...
- 【shell】多命令执行顺序
:举例[root@andon ~]# date;dd if=/dev/zero of=/home/1 bs=1k count=10240;date ##统计dd命令消耗时间,其中/dev/zero为空 ...
- RDO部署openstack(1)
1. 安装系统CentOS 6.5 2. 网络配置 Eth0 设置 # cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ON ...
- IntelliJ IDEA安装lombok插件
Settings→Plugins→Browse repositories 输入lom后选择Install Plugin 按照提示重启IDEA 来自为知笔记(Wiz)
- JS截取后缀名,文件全名,非后缀名的方法---收藏(冷饭_)
<script language="javascript" type="text/javascript"> //取整个文件的路径并且把文件名赋给文件 ...
- flash读取XML节点内容以及节点属性
原文地址:http://hi.baidu.com/yqzdm/item/f95fd9d24679d916d90e44c9 一.xml的写法: 这里的xml只是在有限范围内的了解,限于写一些简单的用于f ...