我有以下的类:
public abstract class AbstractParent {
static String method() {
return "OriginalOutput";
}
}
我想模拟这个方法。我决定使用JMockit。因此,我创建了一个模拟类:
public class MockParent {
static String method() {
return "MOCK";
}
}
我的测试代码如下:
public class RealParentTest {
@Before
public void setUp() throws Exception {
Mockit.redefineMethods( AbstractParent.class, MockParent.class );
}
@Test
public void testMethod() {
assertEquals(MockParent.method(),AbstractParent.method());
}
}
很遗憾,这个测试显示AbstractParent返回的是"OriginalOutput"而不是"MOCK"。有什么想法吗?我做错了什么吗?我已经尝试将我的模拟类声明为抽象类,但没有效果。
编辑 注意,将该方法设置为public可以顺利运行测试...这很奇怪,因为使用JMockit时,你应该能够模拟任何范围的方法。
答案 只有模拟方法需要设置为public,你可以保留原始方法不变。