Jmockit 构造函数与初始代码块
from Jmockit 中文网 http://jmockit.cn/showArticle.htm?channel=4&id=14
有些编写不良好的类的构造函数,初始代码块,静态代码块存在大量的初始化逻辑,初始化会报错。
比如,有些类初始化的时候就去连结DB,连不上就报错。这很影响我们的测试程序的运行。
此时,我们需要把这些初始化逻辑Mock掉。用我们的Mock逻辑替代。要Mock这些初始化代码,很简单。见如下的例子:

//一个包含初始代码块的普通类
public class AnOrdinaryClassWithBlock {
private int i; public static int j; // 初始代码块
{
i = 1;
}
// 静态初始代码块
static {
j = 2;
} // 构造函数
public AnOrdinaryClassWithBlock(int i) {
this.i = i;
} public int getI() {
return i;
} public void setI(int i) {
this.i = i;
} }


//Mock构造函数&初始代码块
public class ConstructorAndBlockMockingTest {
// AnOrdinaryClassWithBlock的MockUp类,继承MockUp即可
public static class AnOrdinaryClassWithBlockMockUp extends MockUp<AnOrdinaryClassWithBlock> {
// Mock构造函数和初始代码块, 函数名$init就代表类的构造函数
@Mock
public void $init(int i) {
} // Mock静态初始代码块,, 函数名$init就代表类的静态代码块
@Mock
public void $clinit() {
}
} @Test
public void testClassMockingByMockUp() {
new AnOrdinaryClassWithBlockMockUp();
AnOrdinaryClassWithBlock instance = new AnOrdinaryClassWithBlock(10);
// 静态初始代码块被mock了
Assert.assertTrue(AnOrdinaryClassWithBlock.j == 0);
// 构造函数和初始代码块被mock
Assert.assertTrue(instance.getI() == 0);
} }

Jmockit 构造函数与初始代码块的更多相关文章
- Java 类的实例变量初始化的过程 静态块、非静态块、构造函数的加载顺序
先看一道Java面试题: public class Baset { private String baseName = "base"; // 构造方法 public Baset() ...
- JMockit
[TOC] 简介 JMockit是基于JavaSE5中的java.lang.instrument包开发,内部使用ASM库来动态修改java的字节码,使得java这种静态语言可以想动态脚本语言一样动态设 ...
- jmockit学习
下图为jmockit 类图.在我们编写代码时几乎都会用到Expectations(期望)和Verifications(校验),二者均继承自Invacations. 常会用到的注解有:@Mocked @ ...
- jmockit学习总结
mock类型和实例 从依赖的测试代码调用的方法和构造函数是mock(模拟)的目标. Mocking提供了我们需要的机制,以便将被测试的代码与(一些)依赖关系隔离开来.我们通过声明适当的模拟字段和/或模 ...
- Jmockit之mock特性详解
本文是Jmockit学习过程中,根据官网所列的工具特性进行解读. 1.调用次数约束(Invocation count constraints) 可以通过调用计数约束来指定预期和/或允许匹配给定期望的调 ...
- 单元测试系列:Mock工具Jmockit使用介绍
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6760272.html Mock工具Jm ...
- 单元测试系列之十一:Jmockit之mock特性详解
本文是Jmockit学习过程中,根据官网所列的工具特性进行解读. 1.调用次数约束(Invocation count constraints) 可以通过调用计数约束来指定预期和/或允许匹配给定期望的调 ...
- 单元测试系列之二:Mock工具Jmockit实战
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6760272.html Mock工具Jm ...
- 单元测试mock框架——jmockit实战
JMockit是google code上面的一个java单元测试mock项目,她很方便地让你对单元测试中的final类,静态方法,构造方法进行mock,功能强大.项目地址在:http://jmocki ...
随机推荐
- Springmvc配置定时任务注解开发
1.添加命名空间和xsd约束 xmlns:task="http://www.springframework.org/schema/task" http://www.springfr ...
- WEB-INF文件夹作用
WEB-INF是Java的WEB应用的安全目录,客户端无法访问,只能通过服务端访问,从而实现了代码的安全.在WEB-INF中主要是系统运行的配置信息和环境 主要有classes.config.lib文 ...
- CENTOS 7 升级内核版本(附带升级脚本)
写在前面的话 对于系统而言,除非是那种安全性要求非常高的公司或者经常会有第三方安全机构对其漏洞扫描的才容易涉及到系统的内核升级,比如之前呆过一个公司,因为需要做三级等保的原因,就会涉及到系统扫描,这时 ...
- docker安装完报错:Failed to start docker.service: Unit docker.service is masked
执行 systemctl start docker 报错 Failed to start docker.service: Unit docker.service is masked. 解决 syste ...
- String与StringBuilder性能比对
//String与StringBuilder性能比对package seday01;/** * String修改字符串带来的性能开销 * @author xingsir * */public clas ...
- jQuery之概念以及基本使用
1. jQuery的概述 1.1 jQuery的概念 jQuery是一个快速.简洁的JavaScript库,其设计的宗旨是“Write Less,Do More” jQuery主要是封装了JavaSc ...
- 在 sql server 中批量删除表
通过查询系统表,可以批量获得 drop 语句,执行即可... select 'drop table '+name+';' from sys.tables
- Qt之圆角阴影边框
Qt的主窗体要做出类似WIN7那种圆角阴影边框,这一直是美工的需求. 这里是有一些门道的,尤其是,这里藏着一个很大的秘密. 这个秘密是一个QT的至少横跨3个版本,存在了2年多的BUG... https ...
- axios+vue实现动态渲染员工数据+数据是对象
<style> table{ width: 600px; margin: 0 auto; text-align: center; border-collapse: collapse; /* ...
- 2.Python网络编程_TCP(简略版)
TCP监听套接字: 当新的客户端请求连接时,服务器端监听套接字收到消息,会分配一个新的套接字对应于客户端(新socket包括四部分:源IP.源端口号.目的IP.目的端口号)用于接收客户端的消息,仔细观 ...