Hello EasyMock
JUnit测试一直是我一个不太注意的地方,长期以来,我总是认为JUnit测试不过是写一点assert,就可以了。
直到我最近被灌输了IoC的思想后,我发现,既然我几乎所有的对象都提取了Interface,难道我一定要对每一个Interface都实现MockObject才可以做测试吗,难道我不可以简单的接管这些Interface,让他们返回我需要测试的值呢?
EasyMock正是解决了这个问题。
如其名,EasyMock的使用十分的简单。
首先我们需要Mock的都应当是Interface。
public interface IHello {
public void setName(String name);
public String getHelloWorld();
}
我们需要测试的类
public class UnderTest {
private IHello hello;
public IHello getHello() {
return hello;
}
public void setHello(IHello hello) {
this.hello = hello;
}
public String sayHello() {
hello.setName("BaoTuo");
return hello.getHelloWorld();
}
}
下面就是关键的部分,我们使用EasyMock来测试
public class Test extends TestCase {
public void testSayHello() {
MockControl ctrlHello = MockControl.createControl(IHello.class);
IHello mockHello = (IHello)ctrlHello.getMock();
mockHello.setName("BaoTuo");
ctrlHello.expectAndReturn(mockHello.getHelloWorld(), "BaoTuo, Hello world!");
ctrlHello.replay();
UnderTest test = new UnderTest();
test.setHello(mockHello);
assertEquals("BaoTuo, Hello world!", test.sayHello());
ctrlHello.verify();
}
}
Thu 11 Nov | baotuo |