Одной из распространенных задач при проведении модульного тестирования является проверка, что определенный метод не был вызван в процессе теста. Это может быть полезно в случаях, когда важно убедиться, что определенное действие не выполняется.
Возьмем для примера следующий интерфейс и класс:
public interface Dependency { void someMethod(); } public class Foo { private final Dependency dependency; public Foo(Dependency dependency) { this.dependency = dependency; } public void bar() { // some code } }
Предположим, что мы хотим протестировать метод bar()
класса Foo
и убедиться, что в процессе его работы не вызывается метод someMethod()
из зависимости Dependency
.
Рассмотрим тестовый класс:
public class FooTest { @Test public void testBarMethod() { Dependency dependency = Mockito.mock(Dependency.class); Foo foo = new Foo(dependency); foo.bar(); // Проверка того, что метод someMethod не был вызван } }
Для проверки того, что метод не был вызван, можно использовать библиотеку Mockito и ее метод verify()
. Этот метод служит для проверки, что определенное поведение произошло.
В данном случае нам нужно проверить, что метод someMethod()
не был вызван ни разу. Это можно сделать с помощью метода verify()
и константы never()
. Вот как это будет выглядеть:
public class FooTest { @Test public void testBarMethod() { Dependency dependency = Mockito.mock(Dependency.class); Foo foo = new Foo(dependency); foo.bar(); Mockito.verify(dependency, Mockito.never()).someMethod(); } }
В этом коде вызов Mockito.verify(dependency, Mockito.never()).someMethod();
означает, что мы проверяем, что на мок-объекте dependency
метод someMethod()
не был вызван ни разу.
Таким образом, можно проверить, что метод не был вызван в процессе теста, используя библиотеку Mockito.
Добавить комментарий