我有以下类:使用JMockit抽象类中的非公共静态方法?
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”,而不是“模拟”。任何想法为什么?难道我做错了什么?我已经尝试将我的模拟类声明为抽象类,但无济于事。
编辑请注意,使该方法公开导致测试运行没有问题......这很奇怪,因为使用JMockit你应该能够模拟任何范围的方法。
答案只有模拟方法需要公开,您可以保留原来的方法。
只是为了过关的Google员工......接受的答案现在过时了,因为Mockit.redefineMethods已被废弃......我试图找到正确的答案。 – 2010-12-14 13:06:01