Класс частичного пересмешивания с несколькими статическими методами с GMock

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

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

Например:

    class StaticClass {

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

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

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

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

2 ответа

Решение

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

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

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

Другие вопросы по тегам