jMock使用注意

1. 测试类如果继承org.jmock.MockObjectTestCase,mock出来的类只能模仿Interface,要模仿具体类需要使用org.jmock.cglib.MockObjectTestCase(需要引用cglib-nodep-2.x.jar);

 

2.静态方法不能模拟,有必要时需要重构代码,这也是TDD代码可测性的要求;

 

3.方法参数如果是数值类型(int等),with()方法不能用isA(int.class)做判断,要么用with(eq(value)),要么使用withAnyArguments()方法;

 

4.jMock2.x一个Mockery实例可以mock多个类,所以一个Testcase只要初始化一个Mockery实例;

 

5.jMock2.x中mock设定的期望调用顺序是:先设定的先调用这个和1.x中相反。如果setUp()中写某一方法的模拟,想在每个testcase中改变使用其他的模拟需要这么写

setUp()
{
    Mockery cntext = new Mockery();
    States sta =context.states("随便名字").startAs("初始化状态名");//1
    context.checking(new Exceptations()
    {
        {
             ignoring(obj).do();when(sta.is("初始化状态名"));//2
             when(sta.isNot("test中状态"));//3
        }
    });
}

test()
{
    sta.is("test中状态").active();//4
    context.checking(new Exceptations(){});
}

 代码解释:

语句1,在setUp()中先设定一个状态;

语句2,写期待时语法为当状态是“初始化”则调用ignoring()方法

语句3,当状态不是“test中状态”则调用ignoring()方法

语句4,在test()中改变状态,激活ignoring(),使得setUp()设置的模拟不生效。之后就可以写新的模拟了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值