jmock可以模拟对象,常用于单元测试,与junit配合使用
下面是一个例子:
消息生产者接口:
public interface MessageProvider{
//获取数据信息
public String getMessage();
}
消息使用者
public class MsgPrint{
String message = "";
public MsgPrint(MessageProvider provider) {
this.message= provider.getMessage();
}
public void print() {
//打印
System.out.println(message);
}
}
使用Jmock模拟一个消息生产者对象
public class JmockDemo extends TestCase {
Mockery context = new Mockery();
@Test
public void testGetMessage() {
// 模拟MessageProvider对象
final MessageProvider provider = context.mock(MessageProvider.class);
final String message = "测试信息";
// expectations
context.checking(new Expectations() {
{
allowing(provider).getMessage();
will(returnValue(message));
}
});
// 调用测试,通过上面的模拟,provider已经是一个有实现的对象
MsgPrint printer = new MsgPrint(provider);
printer.print();
}
}
对应的pom依赖:
<dependency>
<groupId>org.jmock</groupId>
<artifactId>jmock-junit4</artifactId>
<version>2.6.0-RC2</version>
</dependency>