gpt4 book ai didi

java - 使用 JMockit 模拟抽象类中的非公共(public)静态方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:17:01 27 4
gpt4 key购买 nike

我有以下类(class):

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 您应该能够模拟任何范围的方法。

Answer 只是mock方法需要pu​​blic,你可以保留原来的方法。

最佳答案

找到解决办法:只需要将 mock 的方法公开即可(原来的方法可以保持原来的可见性)。

我不知道为什么这会起作用,而原来的方法却不起作用(非常欢迎这样做的人插话),但您需要做的只是将上面示例中的模拟类更改为:

public class MockParent {
public static String method() {
return "MOCK";
}
}

关于java - 使用 JMockit 模拟抽象类中的非公共(public)静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/224721/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com