Как имитировать статические методы в Easymock

Легко смоделировать метод интерфейса, который реализуется каким-либо классом, но если есть класс и есть статический метод, чем мы можем смоделировать его с помощью easymock?

предположим, что это класс A и имеющий возвращаемый метод void как общедоступный статический метод voidA (некоторые аргументы ..) {}

    class A {
public static void methodA(//some args..){
//some logic
}
}

Как мы можем имитировать метод A methodA с помощью EasyMock


person Jitesh Upadhyay    schedule 19.11.2014    source источник
comment
Нет, ты не можешь. Вам понадобится помощь некоторых других библиотек, таких как Powermock (может работать в тандеме с easymock). Jmockit - одна отличная библиотека, которая среди многих других предоставляет функцию статических имитаторов, что делает ее, пожалуй, лучшей библиотекой имитаторов.   -  person mystarrocks    schedule 19.11.2014


Ответы (1)


Как упоминалось в комментарии mystarrocks, вы можете имитировать статические методы, используя PowerMock, даже если вы можете протестировать последний класс / метод и частные методы тоже!

Из документации:

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

Например:

public class IdGenerator {

   /**
    * @return A new ID based on the current time.
    */
   public static long generateNewId() {
      return System.currentTimeMillis();
   }
}

Затем вы можете издеваться над этим статическим методом, используя:

// This is the way to tell PowerMock to mock all static methods of a
// given class
mockStatic(IdGenerator.class);

/*
 * The static method call to IdGenerator.generateNewId() expectation.
 * This is why we need PowerMock.
 */
expect(IdGenerator.generateNewId()).andReturn(expectedId);

Полный пример см. В имитирующих статических методах.

person Paresh Mayani    schedule 27.08.2015