gpt4 book ai didi

java - 模拟静态方法

转载 作者:行者123 更新时间:2023-12-01 16:55:17 28 4
gpt4 key购买 nike

下面是我要测试的方法。我正在使用 TestNG 框架进行单元测试。

class Random{

List<String> namesOfLinks;

public List<String> methodIwantToTest(List<String> cktNames) {
Map<String, Graph> maps = DataBaseReader.getGraphs(cktNames);
for (Entry<String, Graph> entry : maps.entrySet()) {
graphList.add(entry.getValue().getName());
}
}

return namesOfLinks;
}

我正在为上面的类中的方法“methodIwantToTest”编写测试用例。我可以提供一些虚拟的 cktNames 并获取执行方法,如下所示。

@Test (dataProvider = "dp")
public void test_methodIwantToTest(List<String> cktNames, List<String> expectedLinkNames){
Random rm = new Random();
List<String> actual = rm.methodIwantToTest(cktNames);
Assert.assertEquals(actual,expectedLinkNames);
}

现在问题来了。当我在“rm”引用上调用实际方法时,它会执行对另一个 API 的静态方法调用。它必须返回一些东西才能让我的“方法”起作用。我在互联网上搜索并找到“easymock”作为解决方案。但我无法使用“easyMock”来模拟静态方法(DataBaseReader.getGraphs())。我必须模拟该方法,以便它返回定义类型的映射。任何建议都会很棒。谢谢!!

其他问题涉及如何测试静态方法。但我的是在测试实例方法时模拟静态方法。

最佳答案

您需要PowerMock直接模拟静态方法。请参阅https://github.com/jayway/powermock/wiki/TestNG_usage

关于java - 模拟静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33886874/

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