Java 如何使用EasyMock测试mock方法

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

我尝试使用easyMock在我的对象中测试一个方法。 我是这样做的:

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);
}