Как использовать заглушки в JUnit и Java?

Я работал с JUnit и Mocks, но мне интересно, каковы различия между Mocks и Stubs в JUnit и как использовать Stubs в JUnit, Java? И как насмешки, которые имеют EasyMock, Mockito и так далее, что использует Stubs в Java?

пожалуйста, приведите пример кода для заглушек в Java.

2 ответов


для использования заглушек в junit вам не нужны никакие фреймворки.

Если вы хотите заглушить какой-то интерфейс, просто реализуйте его:

interface Service {
    String doSomething();
}

class ServiceStub implements Service {
    public String doSomething(){
        return "my stubbed return";
    }
}

затем создайте новый объект заглушки и введите его в тестируемый объект.

Если вы хотите заглушить конкретный класс, создайте подкласс и переопределите методы stubbed:

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";
    }
}

Это не имеет значения рамки или технологии, на мой взгляд. Насмешки и окурки можно определить следующим образом.

заглушка является контролируемой заменой существующей зависимости (или сотрудника) в системе. Используя заглушку, вы можете проверить свой код, не имея дело с зависимостью напрямую.

макет объекта является поддельным объектом в системе, которая решает, прошел ли модульный тест или не удалось. Он делает это, проверяя, является ли тестируемый объект взаимодействовал, как и ожидалось, с поддельным объектом.

возможно, эти изображения могут прояснить взаимодействия между заглушкой и макетом.

заглушки Stub

Mock Mock