mock方法常用框架_mock框架

JMockit是google code的一个java单元测试的mock项。虚拟的对象就是mock对象,mock对象其实就是真实对象在调试期的替代品。

使用Mock的一些建议:真实对象具有不确定的行为(如股票行情不可预测)

真实对象很难被创建(比如web容器)

真实对象的某些行为很难被触发(比如网络错误)

真实对象另程序的运行时间大大增加

真实对象包含页面

基于行为验证的单元测试可以分为3部分:设置某些期待的调用,执行被测试代码,验证是否调用成功。测试类:在这个类中执行测试代码

CUT(Code Under Test):被测试的类

依赖类:CUT调用的类,也可是被mock的真实对象

使用JMockit生成Mock对象

JMockit可以mock任意的class、interface。可以将mock对象声明为域或方法的参数。默认情况下,mock对象的所以非private的方法(包括除了object的其他继承方法),对这些

方法的调用不会执行原有代码,而是会转交给JMockit处理。

JMockit三步骤record:录制期望。也可以理解说数据准备阶段。比如说是mock掉实例,模拟返回数据,调用次数。

replay:通过调用被测代码,执行测试。

verify:验证。验证执行测试的次数。

在record需要初始化一个Expectation对象,在这个对象内部设置被依赖类的哪些方法被执行。在replay,执行被测试的类,被测试类会调用它依赖的类。JMockit会拦截调用并重定向到

verify.verify执行的操作类似于record,代表操作就是初始化Verifications对象

引入依赖

org.jmockit

jmockit

1.30

test

Demo@Component

public class HelloWorld {

public String hello(){

String hello="hello world";

return hello;

}

}

@RunWith(JMockit.class)

public class HelloWorldTest {

@Mocked

private HelloWorld helloWorld;

@Test

public void testHello(){

new NonStrictExpectations(){//record 一个期望块,用来录制期待模拟行为

{

helloWorld.hello();

result = "hello word";

}

};

helloWorld.hello();//replay

new Verifications(){//verify 一个验证块,用来验证预期Mock行为被调用

{

helloWorld.hello();

times = 1;

}

};

}

}

JMockit注解与方法

注解注解描述@Tested用于标识一个被测对象的实例,只能是类而不能是接口,[email protected]��,将在JMockit之前初始化。

@Injectable@[email protected],只会mock掉指定实例。如果没有被赋初值,那么JMockit将会以相应规则赋初值

@Mockedmocked修饰的实例,将会把实例对应类的所以实例的所以行为都mock掉(无论构造方法还是private、public方法),被mock的方法的调用将不会执行原有的方法,而是会转交给JMockit处理

@Capturing标识一个被mock的类以及子类均被mock

方法方法描述Expectations一个期望块,用来录制期待模拟行为。result是Expectations的一个变量,用来分配给该字段的值将作为当前期望的结果。

NonStrictExceptions类似于Expectations,不同的是。Expectations块中声明的mock一定要被执行,如果没有执行,会被认为case不通过。NonStrictExceptions则是必须调用一次

StrictExceptions严格的期望,指定方法必须按照指定的顺序执行,与NonStrictExceptions用法相反

Verifications一个验证块,用来Mock行为是否被调用。通常与NonStrictExceptions配合使用.times用来验证调用的次数

Invocation工具类,可以获取调用信息

Delegate自己指定返回值,适合那种需要参数决定返回值的场景,只需要执行匿名子类就可以

MockUp模拟函数的实现

Deencapsulation反射工具类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值