【发布时间】:2015-11-24 06:30:41
【问题描述】:
以下是我要测试的方法。我正在使用 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())。我必须模拟该方法,以便它返回定义类型的映射。任何建议都会很棒。 谢谢!!
其他问题涉及如何测试静态方法。但我的是在测试实例方法时模拟静态方法。
【问题讨论】:
-
您也不能使用 easymock 模拟静态方法。您需要使用 powerMock。
标签: java unit-testing testng easymock