JMockit】的更多相关文章

[TOC] 简介 JMockit是基于JavaSE5中的java.lang.instrument包开发,内部使用ASM库来动态修改java的字节码,使得java这种静态语言可以想动态脚本语言一样动态设置被Mock对象私有属性,模拟静态.私有方法行为等等website,参考这里;这里; JMockit有两种Mock方式:基于行为的Mock方式和基于状态的Mock方式: (基于行为的)根据输入输出,功能测试,类似黑盒测试.需要把依赖的代码mock掉,实际相当于改变了被依赖的代码的逻辑. (基于状态的…
引用单元测试中mock的使用及mock神器jmockit实践中的java单元测试中各种Mock框架对比,就能明白JMockit有多么强大: JMockit是基于JavaSE5中的java.lang.instrument包开发,内部使用ASM库来动态修改java的字节码,使得java这种静态语言可以想动态脚本语言一样动态设置被Mock对象私有属性,模拟静态.私有方法行为等等,对于手机开发,嵌入式开发等要求代码尽量简洁的情况下,或者对于被测试代码不想做任何修改的前提下,使用JMockit可以轻松搞定…
1. 何为Mock 项目中各个模块,各个类之间会有互相依赖的关系,在单元测试中,我们只关心被测试的单元,对于其依赖的单元并不关心(会有另外针对该单元的测试). 比如,逻辑层A类依赖了数据访问层B类的取数方法,然后进行逻辑处理.在对A的单元测试中,我们关注的是在B返回不同的查询结果的时候,A是怎么处理的,而不是B到底是怎么取的数,如何封装成一个模型等等. 因此,要屏蔽掉这些外部依赖,而Mock让我们有了一套仿真的环境. 目前业界有几种Mock,这里选用最全面的JMockit进行总结. 2. JMo…
Jmockit可以做什么 使用JMockit API来mock被依赖的代码,从而进行隔离测试. 类级别整体mock和部分方法重写 实例级别整体mock和部分mock mock静态方法.私有变量.局部方法 灵活的参数匹配 maven依赖 Jmockit可以和junit和TestNG配合使用.需要注意的是: 如果使用Junit4.5以上,jmockit依赖需要在junit4之前:或者在测试类上添加注解 @RunWith(JMockit.class). 如果是TestNG 6.2+ 或者 JUnit…
下图为jmockit 类图.在我们编写代码时几乎都会用到Expectations(期望)和Verifications(校验),二者均继承自Invacations. 常会用到的注解有:@Mocked @Tested @Injectable(@Tested和@Injectable经常配对使用),@Capturing(用于接口) mock类型和实例 从依赖的测试代码调用的方法和构造函数是mock(模拟)的目标. Mocking提供了我们需要的机制,以便将被测试的代码与(一些)依赖关系隔离开来.我们通过…
mock类型和实例 从依赖的测试代码调用的方法和构造函数是mock(模拟)的目标. Mocking提供了我们需要的机制,以便将被测试的代码与(一些)依赖关系隔离开来.我们通过声明适当的模拟字段和/或模拟参数来指定要为给定测试(或多个测试)模拟哪些特定依赖性; mock字段声明为测试类的注释实例字段,而mock参数声明为测试方法的注释参数. 要模拟的依赖关系的类型将是模拟字段或参数的类型.这种类型可以是任何类型的引用类型:接口,类(包括抽象和final类型),注释或枚举. 默认情况下,mock类型…
本文是Jmockit学习过程中,根据官网所列的工具特性进行解读. 1.调用次数约束(Invocation count constraints) 可以通过调用计数约束来指定预期和/或允许匹配给定期望的调用数. 2.记录严格期望(Recording strict expectations) 一般记录在"new Expectations(){...}"块中的期望是比较常规的. 这意味着他们指定的调用预计在重播阶段至少会发生一次; 而且它们可能会发生不止一次,并且以与其他记录的期望不同的顺序发…
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6760272.html Mock工具Jmockit使用介绍 在写单元测试的过程中我们会发现需要测试的类有很多依赖,这些依赖的类或者资源又会有依赖,导致在单元测试代码里无法完成构建,我们应对的方法是Mock.简单的说就是模拟这些需要构建的类或者资源,提供给需要测试的对象使用. 1.Mock工具概述 1.1 mock工具列表 可用的Mock…
JMockit常用操作 2017-11-30 转自:http://blog.csdn.net/foreverling/article/details/51234149 目录 1 基本概念  1.1 常用注解  1.2 常用的类2 实例演示  2.1 Status-based    2.1.1 实例1:Mocked - 被Mock修饰的对象,对应的类和实例都会受影响    2.1.2 实例2:injectable - 仅Mock被修饰的对象    2.1.3 实例3:Delegate - 自己指定…
本文是Jmockit学习过程中,根据官网所列的工具特性进行解读. 1.调用次数约束(Invocation count constraints) 可以通过调用计数约束来指定预期和/或允许匹配给定期望的调用数. 2.记录严格期望(Recording strict expectations) 一般记录在“new Expectations(){...}”块中的期望是比较常规的. 这意味着他们指定的调用预计在重播阶段至少会发生一次; 而且它们可能会发生不止一次,并且以与其他记录的期望不同的顺序发生; 另外…
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6760272.html Mock工具Jmockit使用介绍 在写单元测试的过程中我们会发现需要测试的类有很多依赖,这些依赖的类或者资源又会有依赖,导致在单元测试代码里无法完成构建,我们应对的方法是Mock.简单的说就是模拟这些需要构建的类或者资源,提供给需要测试的对象使用. 1.Mock工具概述 1.1 mock工具列表 可用的Mock…
如何使用jmockit进行单元测试 1. Jmockit简介 JMockit 是用以帮助开发人员编写测试程序的一组工具和API,它完全基于 Java 5 SE 的 java.lang.instrument 包开发,内部使用 ASM 库来修改Java的Bytecode.正是由于基于instrument,可以修改字节码.所以这也是它强大的原因. Jmockit可以mock的种类包含了: 1. class(abstract, final, static) 2. interface 3. enum 4.…
对Servlet请求及响应进行mock方法, 通过getMockInstance方法对servlet进行打桩,对servlet提供的方法进行mock,替代真正的servlet请求或响应. 参考链接: https://stackoverflow.com/questions/31689729/servlet-junit-test-using-jmockit 代码如下: @RunWith(JMockit.class) public class ImageServletTest3 { @Test pub…
JMockit是google code上面的一个java单元测试mock项目,她很方便地让你对单元测试中的final类,静态方法,构造方法进行mock,功能强大.项目地址在:http://jmockit.googlecode.com http://jmockit.org/.详细用法可以在上面找到答案. JMockit的测试方式可以通过下面2个途径实现 一.根据用例的测试路径,测试代码内部逻辑 对于这种情景,可以使用jmockit的基于行为的mock方式.在这种方式中,目的是测试单元测试及其依赖代…
JUnit&JMockit单元测试总结 1.JUnit简介 Java单元测试框架业内应用较多的是JUnit,它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个. JUnit有它自己的JUnit扩展生态圈.多数Java的开发环境都已经集成了JUnit作为单元测试的工具. 目前JUnit主流版本有3.x,4.x和5.x,目前继续推荐使用4.x版本,各个IDE中也自动集成了它. 2.JMockit简介 基于Junit单元测试的…
from Jmockit 中文网 http://jmockit.cn/showArticle.htm?channel=4&id=14 有些编写不良好的类的构造函数,初始代码块,静态代码块存在大量的初始化逻辑,初始化会报错. 比如,有些类初始化的时候就去连结DB,连不上就报错.这很影响我们的测试程序的运行. 此时,我们需要把这些初始化逻辑Mock掉.用我们的Mock逻辑替代.要Mock这些初始化代码,很简单.见如下的例子: //一个包含初始代码块的普通类 public class AnOrdina…
1. Jmockit简介 JMockit 是用以帮助开发人员编写测试程序的一组工具和API,它完全基于 Java 5 SE 的 java.lang.instrument 包开发,内部使用 ASM 库来修改Java的Bytecode.正是由于基于instrument,可以修改字节码.所以这也是它强大的原因. Jmockit可以mock的种类包含了: 1. class(abstract, final, static) 2. interface 3. enum 4. annotation 5. nat…
一.在eclipse下建立JMockit工程 1.下载最新版JMockit(jmockit-1.4.zip): 2.解压后的文件夹包含有:library jars, source files, samples, API javadocs, and additional documentation: 3.将jmockit.jar添加到项目classpath中: 特别的: 1)确保classpath中Jar包的顺序:jmockit的jar包必须在junit之前(通过Order and Export"…
公司对开发人员的单元测试要求比较高,要求分支覆盖率.行覆盖率等要达到60%以上等等.项目中已经集成了jmockit这个功能强大的mock框架,学会使用这个框架势在必行.从第一次写一点不会,到完全可以应付工作要求,期间踩了好多坑,学到了不少东西.下面简单总结一下jmockit这个框架的使用,重点介绍MockUp的使用,因为项目中都采用此种方式模拟方法. 一.框架集成 添加maven依赖 <dependencies> <!-- jmockit必须写在junit之前 --> <de…
使用Jmockit来mock类的静态方法,网上有很多mock单个类静态方法的例子.有使用Expectations,还有使用MockUp的. 但是如果想在一个测试方法中mock多个类的静态方法,该怎么写呢. 先看mock一个类的静态方法 public class MethodClass { public static String publicStaticMethod() { return "Original public Static Method !"; } public Strin…
目录 背景 方案设计 单元测试指导思想 单层隔离 内部穿透 技术实现 依赖管理 基础架构 封装Junit5&Jmockit 单元测试配置 TestContainer封装 官方方案 实际方案 完整类代码 实现实例 总结 背景 之前整理过一篇,基于(SpringCloud+Junit5+Mockito+DataMocker)的框架整理的单元测试.当时的项目是一个编排层的服务项目,所以没有涉及到数据库或者其他中间件的复杂问题.而且是项目刚开始,代码环境不复杂,当时的架构基本上能够满足需求. 最近在一个…
final Object[] originValue = new Object[1];try{ new Expectations(XXStatic.class){ { originValue[0] = Deencapsulation.getField(XXStatic.class, "fieldName");//保存更改前的value Deencapsulation.setField(XXStatic.class,"fieldName","mockValu…
new Expectations(){{ calendarService.getGeneralCalendar((Date)any); returns(null, new AbrahamResult<HolidayCalendar>() {{setSuccess(false);}}, new AbrahamResult<HolidayCalendar>() {{setSuccess(true); setResult(holidayCalendar);}}); times =3;}}…
Awesome系列的Java资源整理.awesome-java 就是akullpp发起维护的Java资源列表,内容包括:构建工具.数据库.框架.模板.安全.代码分析.日志.第三方库.书籍.Java 站点等等. 经典的工具与库 (Ancients) In existence since the beginning of time and which will continue being used long after the hype has waned. Apache Ant - Build…
学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:279558494 我们一起学Java! 一.基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http://www.jcp.org/en/jsr/detail?id=133 http://ifeve.com/jmm-faq/ 1.1.2. 了解JVM各种参数及调优 1.1.3. 学习使用Java工具 jps, jstack, jma…
我们都会为我们的代码编写测试,不是吗?毫无疑问,我知道这个问题的答案可能会从 “当然,但你知道怎样才能避免写测试吗?” 到 “必须的!我爱测试”都有.接下来我会给你几个小建议,它们可以让你编写测试变得更容易.那会帮助你减少脆弱的测试,并保证应用程序更加健壮. 与此同时,如果你的答案是 “不,我不编写测试.”,那么我希望这些简单但有效的技术可以让你了解编写测试带来的好处.你也会看到,编写一个复杂.没有价值的测试集(test suit)并没有你认为的那么难. 如何编写测试.有哪些用于管理测试集合的最…
原文地址:http://www.cnblogs.com/best/p/5876559.html 目录 业务流程管理套件 字节码操作 集群管理 代码分析 编译器生成工具 构建工具 外部配置工具 约束满足问题求解程序 持续集成 CSV解析 数据库 数据结构 时间日期工具库 依赖注入 开发流程增强工具 分布式应用 分布式数据库 发布 文档处理工具 函数式编程 游戏开发 GUI 高性能计算 IDE 图像处理 JSON JVM与JDK 基于JVM的语言 日志 机器学习 消息传递 杂项 应用监控工具 原生开…
为什么要写单元测试 首先要介绍为什么蘑菇街支付金融这边会采用单元测试的实践.说起来比较巧,刚开始的时候,只是我一个人会写单元测试.后来老板们知道了,觉得这是件 很有价值的事情,于是就叫我负责我们组的单元测试这件事情.就这样慢慢的,单元测试这件事情就成了我们这边的正常实践了.再后来,在公司层面也开始有一定 的推广. 要说为什么要写单元测试的话,我相信大部分人都能承认.也能理解单元测试在保证代码质量,防止bug或尽早发现bug这方面的作用,这可能 是大家觉得单元测试最大的作用.然而我觉得,除了这方面…
无论是敏捷开发.持续交付,还是测试驱动开发(TDD)都把单元测试作为实现的基石.随着这些先进的编程开发模式日益深入人心,单元测试如今显得越来越重要了.在敏捷开发.持续交付中要求单元测试一定要快(不能访问实际的文件系统或数据库),而TDD经常会碰到协同模块尚未开发的情况,而mock技术正是解决这些问题的灵丹妙药. mock技术的目的和作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开. 我们可以自己编写自定义的Mock对象实现mock技术,但是编写自定义的Mo…
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d28349101cd07a5404c415 Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员都是经过审核的移动开发工程师.每周都会举行嘉宾分享,话题讨论等活动. 本期,我们邀请了蘑菇街 Android 开发工程师——小创,为大家分享<安卓单元测试:What, Why and How>. 分享内容简介: 单元测试一直是软件开发过程中保证软件质量.提高…