Как использовать заглушки в 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

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