Класс частичного пересмешивания с несколькими статическими методами с 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 внутри своего тестового файла и переопределить там методы