jmock2的使用:入门
jmock可以方便的对接口和类做mock
在这里采用的是junit 4.4 和jmock 2.2
注:eclipse3.3带的junit是4.3的,请下载新的
首先看类的,当然,这里示意的只是使用jmock的方法,
真正做测试的时候可不要这么干啊
public class Foo {
public String hello(){
return "hello";
}
}
@RunWith(JMock.class)
public class FooTest {
Mockery context = new JUnit4Mockery() {
{
//默认实现是对接口的,因为这里要对类mock,所以加上这句
setImposteriser(ClassImposteriser.INSTANCE);
}
};
@Test
public void testFoo() throws Exception {
final Foo foo = context.mock(Foo.class);
context.checking(new Expectations(){
{
//one表示foo对象的hello方法调用一次,will返回"foo",好理解吧
one(foo).hello(); will(returnValue("foo"));
//可以再来一句,表示连续调用返回不同的结果
//one(foo).hello(); will(returnValue("xxx"));
}
//可以定义多个block
{
one(foo).hello(); will(returnValue("xxx"));
}
});
assertEquals("foo", foo.hello());
assertEquals("xxx", foo.hello());
//如果有没有使用的mock,测试不通过
context.assertIsSatisfied();
}
}
如果想要表示连续调用产生不同的结果,上面的写法会烦一些
可以采用这种方法
context.checking(new Expectations() {
{
atLeast(1).of(foo).hello(); will(onConsecutiveCalls(
returnValue("foo"),
returnValue("xx")
));
}
});
上一篇: linux 启动oracle数据库