2012-01-07 38 views
0

我尝试使用easyMock在我的对象中测试方法。 我做这样的事情:如何使用EasyMock测试模拟方法

MyObject myObject = createMock(MyObject.class); 
expect(myObject.someMethod()).andReturn(someReturn); 
replay(myObject); 
myObject.methodIwantToTest(); // here assertion or sth like this 
verify(myObject); 

这样的代码是抛出一个异常methodIwantToTest预计不会。如何测试这种方法?

回答

4

Mocks旨在替换您正在测试的类的依赖关系。这意味着如果你正在测试类A,并且它调用了类B上的一个方法,那么你可以用期望的行为来模拟类B,这样你就可以孤立地测试A.

您正在收到该错误,因为当您嘲笑一个班级时,您不应该正常使用它。你应该设定期望值,然后和另一个班级一起使用你的模拟。你从来没有设定应该调用methodIwantToTest的期望,所以当你调用它的时候,会有一个错误(因为它不是框架期望的)。

也就是说,你可以创建一个部分模拟。请参阅this documentation并查找“部分”,在此只模拟某些方法。

2

就像hvgotcodes所说的,Mocks是用来模拟被测试类(CUT)依赖关系的对象,以便您的CUT可以独立于其他代码进行测试。

尽管可用,但通常不建议使用Partial Mocks。所论证的是,当你的软件设计良好时,不需要使用部分模拟。但是在某些情况下,使用部分模拟可能很重要。在你的情况下,部分嘲弄可以按如下方式完成,

@Test 
public void testSomething(){ 
    MyObject myObject = createMockBuilder(MyObject.class) 
     .addMockedMethod("someMethod").createMock(); 
    expect(myObject.someMethod()).andReturn(someReturn); 
    replay(myObject); 
    myObject.methodIwantToTest(); 
    verify(myObject); 
} 
相关问题