Как использовать заглушки в JUnit и Java?
Я работал с JUnit и Mocks, но мне интересно, каковы различия между Mocks и заглушками в JUnit и как использовать заглушки в JUnit, Java? И как Mocks, которые имеют EasyMock, Mockito и так далее, что Stubs использует в Java?
Пожалуйста, приведите пример кода для заглушек в Java.
2 ответа
Для использования заглушек в junit вам не нужны фреймворки.
Если вы хотите заглушить некоторый интерфейс, просто реализуйте его:
interface Service {
String doSomething();
}
class ServiceStub implements Service {
public String doSomething(){
return "my stubbed return";
}
}
Затем создайте новый объект-заглушку и вставьте его в тестируемый объект.
Если вы хотите заблокировать конкретный класс, создайте подкласс и переопределите методы-заглушки:
class Service {
public String doSomething(){
// interact with external service
// make some heavy computation
return "real result";
}
}
class ServiceStub extends Service {
@Override
public String doSomething(){
return "stubbed result";
}
}
На мой взгляд, не имеет значения рамки или технологии. Насмешки и заглушки могут быть определены следующим образом.
Заглушка - это управляемая замена существующей зависимости (или сотрудника) в системе. Используя заглушку, вы можете протестировать свой код, не имея дело с зависимостью напрямую.
Поддельный объект - это поддельный объект в системе, который решает, пройден ли модульный тест или нет. Это делается путем проверки того, взаимодействовал ли тестируемый объект, как и ожидалось, с поддельным объектом.
Возможно, эти изображения могут прояснить взаимодействие между заглушкой и макетом.
В общем - Mock означает реализовать какое-то поведение, заглушки - просто предоставить некоторые данные. другими словами, предпочтительно использовать рабочий макет, когда вам нужно продемонстрировать, что он меняет / сохраняет какое-то состояние
используйте слово "заглушка", когда ваши классы раскрывают только внутреннее состояние. действительно, вы можете использовать mock везде, а заглушка - это просто подмножество mock