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吧。

    1. import mockit.NonStrict;
    2. import org.jtester.testng.JTester;
    3. import org.jtester.unitils.jmockit.MockedBean;
    4. import org.testng.annotations.Test;
    5. import org.unitils.spring.annotation.SpringApplicationContext;
    6. import org.unitils.spring.annotation.SpringBean;
    7. /**
    8. * Jtester测试例子,按照注释顺序学习
    9. *
    10. * @author tengfei.fangtf
    11. */
    12. @SpringApplicationContext( { "applicationContext.xml" })
    13. // 1.@SpringApplicationContext:加载Spring 配置文件,所有测试相关的bean都在这个容器中;
    14. public class BusinessTestCase extends JTester// 2.JTester:要使用JTester
    15. // 提供的功能,需要继承此基类;
    16. {
    17. @SpringBean("businessService")
    18. // 3.@SpringBean:从容器中取出指定id 的bean 并注入到测试类中
    19. private AppInternalService businessService;
    20. @MockedBean
    21. @NonStrict
    22. // 4.@Mocked @MockedBean:mock 出一个对象,并将该对象与Spring 容器结合,实现Autowired;
    23. private OneHessianServiceClient hessianClient;
    24. @Test(groups = { "FirstTestGroup" })
    25. // 5.@Test;TestNG 的注解;指明此方法为一个TestCase;
    26. public void testBusinessNormal() {
    27. new Expectations() {// 6.设置mock 对象的期望返回值
    28. {
    29. hessianClient.hessianServiceInvorke(anyString);
    30. result = "HH";// 那么执行这个方法,永远都返回HH
    31. }
    32. };
    33. String returnResult = businessService
    34. .bussinessService("Sample Business!");
    35. System.out.println("\n ---> " + returnResult);// 输出HH
    36. want.string(returnResult).notNull();// want:JTester 框架提供的强大的断言;
    37. }
    38. }

单元测试利器之Jtester的更多相关文章

  1. Win下必备利器之Cmder

    诚言,对于开发码字者,Mac和Linux果断要比Windows更贴心;但只要折腾下,Windows下也是有不少利器的.之前就有在Windows下效率必备软件一文中对此做了下记载:其虽没oh-my-zs ...

  2. C#编程利器之二:结构与枚举(Structure and enumeration)【转】

    C#编程利器之二:结构与枚举(Structure and enumeration) 在上一篇文章中,介绍了类如何封装程序中的对象.而实际中,出了类可以封装对象外,结构和枚举也可以封装一些对象,本文将着 ...

  3. 大数据并行计算利器之MPI/OpenMP

    大数据集群计算利器之MPI/OpenMP ---以连通域标记算法并行化为例 1 背景 图像连通域标记算法是从一幅栅格图像(通常为二值图像)中,将互相邻接(4邻接或8邻接)的具有非背景值的像素集合提取出 ...

  4. php调试利器之phpdbg

    信海龙的博客 php调试利器之phpdbg 简介 PHPDBG是一个PHP的SAPI模块,可以在不用修改代码和不影响性能的情况下控制PHP的运行环境. PHPDBG的目标是成为一个轻量级.强大.易用的 ...

  5. 后台任务利器之Hangfire

    后台任务利器之Hangfire 一.简述 Hangfire作为一款高人气且容易上手的分布式后台执行服务,支持多种数据库.在.net core的环境中,由Core自带的DI管理着生命周期,免去了在NF4 ...

  6. Android开发利器之ActivityTracker

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/113 Android开发利器之ActivityTracke ...

  7. windows管理员利器之用Log Parser Studio分析IIS日志(附逐浪CMS官方命令集)

    原文:windows管理员利器之用Log Parser Studio分析IIS日志(附逐浪CMS官方命令集) Log Parser Studio是一个强大的IIS图形分析工具,值得推荐. 1. 安装L ...

  8. .NET Core开源组件:后台任务利器之Hangfire 转载 https://www.cnblogs.com/chenug/p/6655636.html

    .NET Core开源组件:后台任务利器之Hangfire   一.简述 Hangfire作为一款高人气且容易上手的分布式后台执行服务,支持多种数据库.在.net core的环境中,由Core自带的D ...

  9. Java高并发编程基础三大利器之CountDownLatch

    引言 上一篇文章我们介绍了AQS的信号量Semaphore<Java高并发编程基础三大利器之Semaphore>,接下来应该轮到CountDownLatch了. 什么是CountDownL ...

随机推荐

  1. 在Linux中搭建一个FTP服务器

    在Linux中搭建一个ftp服务器,以供两个工作小组保管文件使用.禁用匿名.第一个小组使用ftp账号:ftp1,工作目录在:/var/ftp/ftp1:第二个小组使用ftp2,工作目录在:/var/f ...

  2. Openjudge计算概论-DNA排序

    /*===================================== DNA排序 总时间限制: 1000ms 内存限制: 65536kB 描述 给出一系列基因序列,由A,C,G,T四种字符组 ...

  3. JavaScript 类定义常用方法(转)

    1.对象直接量 var obj1 = { v1 : "", get_v1 : function() { return this.v1; }, set_v1 : function(v ...

  4. 关于ttserver, mongodb, couchbase. ssdb ,tair, leveldb的一点使用体验

    2年前使用的ttserver,性能很高,支持分布式,但稳定性不足,当存储容量达到亿级的时间经常会出现无法插入的情况,而且不知道是什么原因造成的错误,重启后也无济于事,只好重启开新库. 单库写入性能 2 ...

  5. 持续集成之Jenkins(坏老头)

    点击关注哦↑↑↑↑↑↑↑↑↑ 持续集成 有关持续集成的简介,可参考我此前的文章:http://blog.csdn.net/benkaoya/article/details/44993583 Jenki ...

  6. 计算阶乘n!末尾0的个数

    一.问题描述 给定一个正整数n,请计算n的阶乘n!末尾所含有“0”的个数.例如: 5!=120,其末尾所含有的“0”的个数为1: 10!= 3628800,其末尾所含有的“0”的个数为2: 20!= ...

  7. android学习笔记30——AndroidMainfest.xml

    Manifest.xml文件的职责:指定APP的包名.声明四大组件, 以及启动方式.指定APP运行的进程名称.指定APP权限.指定最小API版本.指定需要连接的库. Manifest.xml的格式:& ...

  8. js工具类 ----正则

    function(value){  if(value){   var reg=new RegExp("^[a-zA-Z0-9_-]+$");   return reg.test(v ...

  9. final specifier (since C++11)

    Specifies that a virtual function cannot be overridden in a derived class or that a class cannot be  ...

  10. 黄聪:PHP5.6+7代码性能加速-开启Zend OPcache-优化CPU

    说明 PHP 5.5+版本以上的,可以使用PHP自带的opcache开启性能加速(默认是关闭的).对于PHP 5.5以下版本的,需要使用APC加速,这里不说明,可以自行上网搜索PHP APC加速的方法 ...