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. windows中用eclipse开发Android环境搭建SDK安装异常

    SDK更新时的“https://dl-ssl.google.com refused”错误 Download interrupted: hostname in certificate didn't ma ...

  2. python3_RoboBrowser_test

    python3_RoboBrowser_test selenium库作为交互是非常方便的,但是却大大加长了加载的时间,例如需要渲染网址,加载js,造成在爬虫过程中时间变长. 因此找到一个虚拟的浏览器, ...

  3. 通用的业务编码规则设计实现[转:http://www.cnblogs.com/xqin/p/3708367.html]

    一.背景 每一个企业应用中不可避免的都会涉及到业务编码规则的问题,比如订单管理系统中的订单编号,比如商品管理系统中的商品编码,比如项目管理系统中的项目编码等等,这一系列的编码都需要管理起来,那么它们的 ...

  4. My second "last working day"

    时间真快,转眼硕士毕业已经快8年了. 今天是我的第二个last working day.也是我即将结束在外企工作的节点. 说来,毕业的时候,找工作,在确定了最后要去的单位之前,手头已经拿过了10家单位 ...

  5. oc-数据模型的建立

    @{@"name":@"David Beckham",@"age":@38,@"gender":@"男&quo ...

  6. java 输入输出项目

    package hellohe; import java.util.Scanner; /** * * @author Administrator *1.导入java.util.scanner; *2. ...

  7. 遇到 Error creating the Web Proxy specified in the 'system.net/defaultProxy' configuration section的解决办法

    用记事本编辑*.EXE.config,在“<system.net>”节点加入<defaultProxy> <proxy usesystemdefault="Fa ...

  8. SPOJ #11 Factorial

    Counting trailing 0s of n! It is not very hard to figure out how to count it - simply count how many ...

  9. Env:Winmanager插件使用

    转自:http://www.cnblogs.com/feichexia/archive/2012/11/06/vim_WinManager.html 1.准备winmanger插件,从下面网址下即可: ...

  10. Linux中文件描述符fd和文件指针flip的理解

    转自:http://www.cnblogs.com/Jezze/archive/2011/12/23/2299861.html 简单归纳:fd只是一个整数,在open时产生.起到一个索引的作用,进程通 ...