下面是我想測試的方法。我正在使用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。 – proudandhonour