У меня есть метод в классе, который пишет некоторую строку, которая вызывает другой метод, который делает то же самое. Что-то вроде:Как вы заглушите индивидуальный метод в java для модульного тестирования?
void foo() {
a += "xyx";
bar();
}
void bar() {
a += "abc";
}
Для тестирования модулей, я хочу проверить foo и bar отдельно. Есть ли способ предотвратить запуск бара, когда я вызываю foo() или заменяю его другим методом?
Как выглядит код клиента? Как вы создаете экземпляр класса, который теперь перекрывает bar(). Таким образом, вам придется изменить код (или фабрику), который создает новый класс. Как я сказал ниже, я думаю, нам нужно больше деталей о проблеме, в частности, может ли источник быть изменен. –
Если вы решите сделать это, имейте в виду, что ваш тест будет тестировать что-то немного отличное от класса, который должен быть протестирован. Это может привести к появлению отверстий в вашем тестовом покрытии. – NamshubWriter
@AdrianMouat, если это единичный тест, мы можем предположить, что мы можем создать класс, который тестируется полностью отдельно. Если это так, мы должны иметь возможность просто: новый Clazz() {/ * здесь переопределить * /} Это означает, что источник не нуждается в изменении – Egwor