в повседневной жизни Java Во время разработки обычно требуется модульное тестирование, и Mock
Тестирование — один из важных методов модульного тестирования. так называемый Mock
Тестирование — это метод тестирования, в котором виртуальный объект используется для представления некоторых более сложных объектов, которые нелегко создать или получить в процессе тестирования, чтобы облегчить тестирование. Среди них этот виртуальный объект называется Mock
Object, наиболее распространенным способом является его использование для представления Servlet
середина HttpServletRequest
объект,JDBC
серединаиз ResultSet
Объекты и т. д.
Используя Mock
,Нам удалось уменьшить Модульное Проверка связи, если код середина имеет зависимость от других классов или интерфейса, через Mock
Это может помочь нам смоделировать эти зависимости и помочь нам проверить вызываемое поведение зависимостей. проведение Mock
,Мы можем проверить вызов определенных методов объекта,Сколько раз его называли,Каковы параметры метода?
Мы представили его раньше Junit Чтобы узнать о соответствующих знаниях, друзья, которые с этим не знакомы, могут прочитать мою предыдущую статью. -> пришло время обниматься JUnit Модуль протестирован! . но используйте JUnit Иногда проблема заключается в том, что для создания сложных объектов, которые трудно построить, нам может потребоваться много усилий. На этом этапе мы можем использовать Mock
тест и JUnit Комбинированный.
в многочисленных Mock
рамкасередина,Mockito
Это относительно популярный фреймворк, и люди часто сравнивают его с JUnit используется в сочетании。Mockito
позволяет нам создавать и настраивать Mock
Object, тем самым максимально упрощая разработку внешне зависимых тестовых классов.
Обычно используйте Mockito
Его можно разделить на следующие три этапа:
Давайте посмотрим, как его использовать Mockito
+ JUnit。
Поскольку вы хотите тестировать, вы должны писать код. Чтобы облегчить управление зависимостями, в качестве примера создается проект Maven. Если вы все еще не знаете, как создать проект Maven, рекомендуется сначала прочитать следующую статью.
Maven Начало работы: использование IDEA создавать Maven проект | JavaPark
После завершения создания структура проекта будет такой, как показано на рисунке ниже.
Сразу после этого мы пошли на проект. pom.xml
серединадобавить в Mockito
и JUnit
зависимость.
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>4.3.1</version>
<scope>test</scope>
</dependency>
</dependencies>
наконец получил pom.xml
Содержимое файла следующее:
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>site.cunyu1943</groupId>
<artifactId>mockito-junit-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<name>mockito-junit-demo Tapestry 5 Application</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>4.3.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Пройдя через создательпроект и добавив соответствующие зависимости, мы можем написать код и продолжить тестирование.
Такой же,первыймыпроектсерединадобавить впростойиз Demo
добрый,и объявить метод в его середине,Окончательный код выглядит следующим образом.
public class Demo {
public int sum(int start, int end) {
int sum = 0;
for (int i = start; i <= end ; i++) {
sum += i;
}
return sum;
}
}
Затем в Demo
Класс серединащелкните правой кнопкой мыши, выберите выбор Generate
,Появятся следующие элементы выбора,насвыбирать Test
Чтобы автоматически генерировать тестовый код для этого класса.
выбирать Test
После этого ИДЕЯ Соответствующий тестовый класс не будет сгенерирован сразу, но появится следующее окно конфигурации, которое мы можем настроить перед генерацией. Здесь следует отметить следующие основные моменты:
Testing library
:для тестированияиздобрый Библиотека,нас Как правило, тестыдавыбирать JUint4
или JUnit5
。Class name
:тестдобрыйиз Имя класса, по умолчанию здесь обычно да Имя класса + Test
,Вы можете изменить его в соответствии с вашими потребностями.Destination package
:генерироватьизтестдобрыйрасположениеиз Сумка,Обычно да соответствует пакету, в котором находится указанный выше класс.Generate test methods for
:В основном здесьдавыбирать需要генерироватьтестизметод,нижеиз Member
середина, просто проверь это.После завершения настройки IDEA будет внутри test/java
Созданный пакет автоматически упаковывается в папку, и создается соответствующий тестовый класс. Окончательный автоматически созданный тестовый класс выглядит следующим образом.
Наконец, мы следуем Mock
Три этапа тестирования используются для написания кода, а окончательный метод тестирования выглядит следующим образом.
class DemoTest {
@Test
void sum() {
Demo demo = Mockito.mock(Demo.class);
Mockito.when(demo.sum(1, 10)).thenReturn(55);
Assertions.assertEquals(55, demo.sum(1, 10), «Результат не такой, как ожидалось»);
}
}
Чтосередина,@Test
да JUnit
аннотация середина, используемая для обозначения методов тестирования.
Тогда приведенный выше код середина Нет. 4 Линия соответствует шагу тестирования середина, моделирующего внешние зависимости, создающего. Demo
объект.
Нет. 5 строк соответствуют второму этапу тестирования середина.,Выполнить тестовый код,Затем верните результат выполнения.
Нет. 6 Строки соответствуют трем шагам тестирования середина для проверки правильности выполнения кода да. да в основном используется здесь Mockito
Метод утверждения середина.
наконец,Выполнить метод тестового класса середина,если тест пройден,но IDEA середина появляется со следующими результатами.
Предположим, мы модифицируем приведенный выше код середина, чтобы утверждать ожидаемое значение середина.,Тест не пройден,в это время IDEA Будет возвращено быстрое сообщение для утверждения середина.
class DemoTest {
@Test
void sum() {
Demo demo = Mockito.mock(Demo.class);
Mockito.when(demo.sum(1, 10)).thenReturn(55);
Assertions.assertEquals(56, demo.sum(1, 10), «Результат не такой, как ожидалось»);
}
}
Вышеуказанное содержание посвящено Mockito
соответствовать JUnit
руководить Модульное Это простой пример обучения, в основном с двух сторон. С одной стороны, как создать и добавить соответствующие зависимости? С другой стороны, как написать код и автоматически сгенерировать соответствующий тестовый класс, а затем написать тестовый код. И еще о Mockito
Мы познакомим вас с навыками использования в другой статье середина.