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. Integer.parseInt()和Integer.valueOf()有什么区别

    jdk的源代码的时候注意到Integer.parseInt(s) 和 Integer.valueOf(s)的具体代码的实现有所区别: Java代码 public static int parseInt ...

  2. android dimens 读取 px&dp问题

    1.dimens.xml文件:     <resources> <dimen name="area_margin_top">100dp</dimen& ...

  3. jquery点击改变class并toggle

    <html> <head> <meta charset="utf-8"> <title></title> <scr ...

  4. Java自带工具jstack故障分析的一个案例

    公司的一个web应用项目运行了很长一段时间,达半年之久,前段时间突然出现了服务不可用的情况,所有的请求都不可达,服务彻底挂了.查看tomcat进程还在,cpu使用率低,一时没找着问题,重启了服务.过了 ...

  5. ASP.NET Web API实践系列04,通过Route等特性设置路由

    ASP.NET Web API路由,简单来说,就是把客户端请求映射到对应的Action上的过程.在"ASP.NET Web API实践系列03,路由模版, 路由惯例, 路由设置"一 ...

  6. LintCode "Triangle Count"

    Should be "Medium" or even "Easy".. Just with a little Greedy. class Solution { ...

  7. 剑指offer系列48---左旋转字符串

    [题目]对于一个给定的字符序列S,旋转指定位置左边的字符到右边.. * 例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”. * [思路]先分成两个部分: ...

  8. Redis服务停止报错解决方案[NOAUTH Authentication required]

    Redis服务器设置密码后,使用service redis stop 会出现以下信息: service redis stop Stopping ... OK (error) NOAUTH Authen ...

  9. Linux系统默认服务建议开启关闭说明列表

    服务名称 功能简介 建议 acpid 电源管理接口.如果是笔记本用户建议开启,可以监听内核层的相关电源事件. 开启 anacron 系统的定时任务程序.cron的一个子系统,如果定时任务错过了执行时间 ...

  10. netty常用代码

    一. Server public class TimeServer_argu { public void bind(int port) throws InterruptedException { Ev ...