Ниже приведен метод, который я хочу проверить. Я использую платформу 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