【发布时间】:2017-05-05 14:58:20
【问题描述】:
根据答案here,@Mock 注释和 createMock 从功能视图来看是相同的。但是,我在使用这些时遇到了一个奇怪的问题。这里有一点背景。
我必须测试从 Abstractclass 调用方法的 ClassUnderTest。当我应该从单元测试调用 ClassUnderTest 时,我希望调用 Abstractclass 方法。
`
public abstract AbstractClass {
public void addValue(int a, int b) {
// Invoking another method which is abstract.
};
}
public class ClassUnderTest {
public Abstractclass obj;
public ClassUnderTest(Abstractclass obj) {
// Parameterized constructor.
}
public MethodToTest(){
object.addValue(1, 2); // Calls the method.
}
}
@RunWith(EasyMockRunner.class)
public class TestFile {
@Mock
private AbstractClass concrete;
@Test
public void testMethod() {
concrete = EasyMock.createMock(AbstractClass.class);
concrete.addValue(1,2);
EasyMock.expectLastCall().once();
EasyMock.replay();
new ClassUnderTest().methodToTest();
EasyMock.verify() // The code under scan.
}
}
` 我面临这些问题:
当我使用@Mock 注解时,EasyMock verify 会抛出一个错误,提示 Abstractclass.addValue() 期望未满足。
但是,当我删除 @Mock 注释时,它可以正常工作并且没有错误。
对于非抽象类,@Mock 对我来说效果很好。
谁能解释一下这种行为?
【问题讨论】:
标签: java unit-testing annotations mocking easymock