Как я дразню статические методы в классе с easymock?

Предположим, что у меня есть класс как так:

public class StaticDude{
    public static Object getGroove() {
        // ... some complex logic which returns an object
    };
}

Как я дразню вызов статического метода с помощью легкой насмешки? StaticDude.getGroove().

Я использую легкие ложные 3.0

29
задан Pascal Thivent 17 July 2010 в 20:43
поделиться

3 ответа

Не знаю, как с чистым EasyMock, но рассмотрите возможность использования расширений PowerMock для EasyMock.

Он имеет много классных функций для того, чтобы делать именно то, что вам нужно - https://github.com/jayway/powermock/wiki/MockStatic

25
ответ дан 28 November 2019 в 01:36
поделиться

Easymock - это среда тестирования для «интерфейсов (и объектов через расширение класса)», поэтому вы можете имитировать класс без интерфейса. Рассмотрите возможность создания интерфейсного объекта с аксессором для вашего статического класса, а затем вместо этого имитируйте этот аксессор.

РЕДАКТИРОВАТЬ: Кстати, я бы не рекомендовал делать статические классы. Если вы делаете TDD, лучше иметь интерфейс ко всему.

11
ответ дан 28 November 2019 в 01:36
поделиться

Вообще говоря, невозможно высмеять статический метод без использования какого-либо аксессора, что, похоже, уничтожает цель использования статического метода. Это может быть довольно неприятно.

Есть один известный мне инструмент под названием "TypeMock Isolator", который использует своего рода сатанинскую магию для высмеивания статических методов, но этот инструмент довольно дорогой.

Проблема в том, что я не знаю способа переопределить статический метод. Вы не можете объявить его виртуальным. Вы не можете включить его в интерфейс.

Извините за негатив.

4
ответ дан 28 November 2019 в 01:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: