Java 如何使用EasyMock测试mock方法
我尝试使用easyMock在我的对象中测试一个方法。 我是这样做的:Java 如何使用EasyMock测试mock方法,java,testing,easymock,Java,Testing,Easymock,我尝试使用easyMock在我的对象中测试一个方法。 我是这样做的: MyObject myObject = createMock(MyObject.class); expect(myObject.someMethod()).andReturn(someReturn); replay(myObject); myObject.methodIwantToTest(); // here assertion or sth like this verify(myObject); 这样的代码会引发meth
MyObject myObject = createMock(MyObject.class);
expect(myObject.someMethod()).andReturn(someReturn);
replay(myObject);
myObject.methodIwantToTest(); // here assertion or sth like this
verify(myObject);
这样的代码会引发methodIwantToTest不应出现的异常。如何测试此方法?模拟用于替换正在测试的类的依赖项。这意味着,若您正在测试类A,并且它调用了类B上的方法,那个么您可以用预期的行为模拟类B,这样您就可以单独测试类A 您收到这个错误是因为当您模拟一个类时,您不应该正常使用它。你应该设定期望值,然后与另一个班级一起使用你的模拟。您从未设置应该调用
methodIwantToTest
的期望,因此当您调用它时,出现了一个错误(因为框架不期望它)
也就是说,您可以创建一个部分模拟。请参阅并查找“Partial”,其中仅模拟某些方法。模拟用于替换您正在测试的类的依赖项。这意味着,若您正在测试类A,并且它调用了类B上的方法,那个么您可以用预期的行为模拟类B,这样您就可以单独测试类A 您收到这个错误是因为当您模拟一个类时,您不应该正常使用它。你应该设定期望值,然后与另一个班级一起使用你的模拟。您从未设置应该调用
methodIwantToTest
的期望,因此当您调用它时,出现了一个错误(因为框架不期望它)
也就是说,您可以创建一个部分模拟。请参阅并查找“Partial”,其中您只模拟某些方法。正如hvgotcodes所说,模拟是用于模拟被测类(CUT)的依赖关系的对象,以便可以独立于其他代码测试CUT 虽然可用,但通常不建议使用。提出的论点是,当软件设计良好时,不需要使用部分模拟。但是,在某些场景中,使用部分模拟可能很重要。在您的情况下,可以按如下方式进行部分模拟:
@Test
public void testSomething(){
MyObject myObject = createMockBuilder(MyObject.class)
.addMockedMethod("someMethod").createMock();
expect(myObject.someMethod()).andReturn(someReturn);
replay(myObject);
myObject.methodIwantToTest();
verify(myObject);
}
正如hvgotcodes所说,mock是用来模拟被测类(CUT)的依赖关系的对象,因此可以独立于其他代码对CUT进行测试 虽然可用,但通常不建议使用。提出的论点是,当软件设计良好时,不需要使用部分模拟。但是,在某些场景中,使用部分模拟可能很重要。在您的情况下,可以按如下方式进行部分模拟:
@Test
public void testSomething(){
MyObject myObject = createMockBuilder(MyObject.class)
.addMockedMethod("someMethod").createMock();
expect(myObject.someMethod()).andReturn(someReturn);
replay(myObject);
myObject.methodIwantToTest();
verify(myObject);
}