【发布时间】:2010-09-18 11:48:05
【问题描述】:
我有以下课程:
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”。任何想法为什么?难道我做错了什么?我也尝试将我的模拟类声明为抽象类,但无济于事。
编辑请注意,将方法设为公开会导致测试正常运行...这很奇怪,因为使用 JMockit 您应该能够模拟任何范围的方法。
回答只有mock方法需要公开,你可以保留原来的方法。
【问题讨论】:
-
只是为了路过的 googler.. 接受的答案现在已经过时了,因为 Mockit.redefineMethods 已被弃用...我正在努力寻找正确的答案。
标签: java unit-testing mocking jmockit