Предположим, что у меня есть класс как так:
public class StaticDude{
public static Object getGroove() {
// ... some complex logic which returns an object
};
}
Как я дразню вызов статического метода с помощью легкой насмешки? StaticDude.getGroove()
.
Я использую легкие ложные 3.0
Не знаю, как с чистым EasyMock, но рассмотрите возможность использования расширений PowerMock для EasyMock.
Он имеет много классных функций для того, чтобы делать именно то, что вам нужно - https://github.com/jayway/powermock/wiki/MockStatic
Easymock - это среда тестирования для «интерфейсов (и объектов через расширение класса)», поэтому вы можете имитировать класс без интерфейса. Рассмотрите возможность создания интерфейсного объекта с аксессором для вашего статического класса, а затем вместо этого имитируйте этот аксессор.
РЕДАКТИРОВАТЬ: Кстати, я бы не рекомендовал делать статические классы. Если вы делаете TDD, лучше иметь интерфейс ко всему.
Вообще говоря, невозможно высмеять статический метод без использования какого-либо аксессора, что, похоже, уничтожает цель использования статического метода. Это может быть довольно неприятно.
Есть один известный мне инструмент под названием "TypeMock Isolator", который использует своего рода сатанинскую магию для высмеивания статических методов, но этот инструмент довольно дорогой.
Проблема в том, что я не знаю способа переопределить статический метод. Вы не можете объявить его виртуальным. Вы не можете включить его в интерфейс.
Извините за негатив.