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 |

0 Responses to "Hello EasyMock"

Leave a Reply




Remember Me?