JMock简单入门

先说说JMock是用来干什么的,我觉得最简单的说,他就是用来模拟一个类,即使这个类根本没有实现。这个跟他的名字就比较像了。

举个例子吧,有一个Subscripter的类,他没有实现只有接口,我们有一个Publisher的类,这个类的测试,要用到这个传说中的Subscripter类,这个时候在没有实现,或者想减少测试干扰的时候,我们可以模拟Subscripter这个类。废话少说,实现这个例子吧:

 

1.建立一个工程,然后下载jmock,把如下的库加载到工程中(这里使用的是junit4的方法。)

  • jmock-2.5.1.jar
  • hamcrest-core-1.1.jar
  • hamcrest-library-1.1.jar
  • jmock-junit3-2.5.1.jar
  • jmock-junit4-2.5.1.jar

2.要有Subscripter的接口定义:

 

interface Subscriber {
    void receive(String message);
}

 

3.来实现我们的junit测试吧:

注意:

使用JMock模拟类的条件:

  1、要有无参数的构造器;

  2、构造器是public;

 

@RunWith(JMock.class)
class PublisherTest {
    Mockery context = new JUnit4Mockery();
    
    @Test 
    public void oneSubscriberReceivesAMessage() {
        // set up
        final Subscriber subscriber = context.mock(Subscriber.class);

        Publisher publisher = new Publisher();
        publisher.add(subscriber);
        
        final String message = "message";
        
        // expectations
        context.checking(new Expectations() {{
            oneOf (subscriber).receive(message);
        }});

        // execute
        publisher.publish(message);
    }
}

 

这里说明一下:

 final Subscriber subscriber = context.mock(Subscriber.class);

建立了一个虚拟的subscriber的类,然后替代它的方法:

 context.checking(new Expectations() {{
            oneOf (subscriber).receive(message);
        }});

看看执行效果,是不是已经被替代了。步骤就是这么简单。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值