Частичный фиктивный класс с несколькими статическими методами с GMock

Я использую GMock, чтобы добавить модульное тестирование в наши существующие проекты Java. У нас есть несколько мест, где методы, которые необходимо протестировать, являются статическими методами, которые используют дополнительные статические методы внутри метода, который мы хотим протестировать.

Я хотел бы иметь возможность частично издеваться над классом, практически всеми статическими методами класса, кроме начальной точки входа для тестирования.

Например:

    class StaticClass {

      static void method(String one) {
          method2()
      }

      static void method(String one, String two) {
          ...
      }
    }

Я надеюсь, что смогу смоделировать второй статический метод, но как только я это сделаю, метод (String) станет MIA, и выполнение теста завершится ошибкой с исключением ожидания. Есть ли способ частично издеваться над классом, сохраняя функциональность первого метода, но издеваясь над статическим доступом второго метода?

Я также пытался использовать программирование метакласса для имитации метода, но если я устанавливаю метод равным закрытию, первый метод снова становится MIA. Не уверен, как это сделать с перегруженными методами. Любые идеи?


person Patrick    schedule 23.02.2012    source источник


Ответы (2)


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

То же самое с MOP Groovy.

person Johnny Jian    schedule 24.02.2012

Хотя это не касается конкретно GMock, вы можете расширить StaticClass внутри своего тестового файла и переопределить там методы.

person doelleri    schedule 23.02.2012