HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Когда тестов и файлов с тестами становится много, возникают новые вопросы. Как группировать тесты? Как запустить на выполнение все тесты из одной директории? Если их очень много и они долгие, можно ли запустить их параллельно?</p>
1 <p>Когда тестов и файлов с тестами становится много, возникают новые вопросы. Как группировать тесты? Как запустить на выполнение все тесты из одной директории? Если их очень много и они долгие, можно ли запустить их параллельно?</p>
2 <p>Для решения этих вопросов используют специальные тестовые фреймворки. Они помогают организовать структуру тестов и дают много полезного, например, удобный вывод. С большинством из этих возможностей мы познакомимся далее по курсу. В Java мире наиболее популярен фреймворк<em>JUnit</em>. К слову, с помощью него мы тестируем все ваши решения на этом курсе.</p>
2 <p>Для решения этих вопросов используют специальные тестовые фреймворки. Они помогают организовать структуру тестов и дают много полезного, например, удобный вывод. С большинством из этих возможностей мы познакомимся далее по курсу. В Java мире наиболее популярен фреймворк<em>JUnit</em>. К слову, с помощью него мы тестируем все ваши решения на этом курсе.</p>
3 <h2>А что с AssertJ?</h2>
3 <h2>А что с AssertJ?</h2>
4 <p>AssertJ - отличная библиотека для тестов, но это именно библиотека. Она предоставляет большое количество классов и методов, с помощью которых вы можете делать проверки. Однако точкой входа в вашу программу и тесты останется всё тот же метод main(). То есть тестирование с AssertJ, в общем случае, становится неотъемлемой и неотделимой частью программы. Это просто методы, которые вызываются по ходу выполнения программы.</p>
4 <p>AssertJ - отличная библиотека для тестов, но это именно библиотека. Она предоставляет большое количество классов и методов, с помощью которых вы можете делать проверки. Однако точкой входа в вашу программу и тесты останется всё тот же метод main(). То есть тестирование с AssertJ, в общем случае, становится неотъемлемой и неотделимой частью программы. Это просто методы, которые вызываются по ходу выполнения программы.</p>
5 <p>JUnit - это уже фреймворк. Он обладает своей собственной точкой входа (классом/методом, с которого начинается выполнение тестов), что делает его фактически второй программой, которая живёт отдельно от вашего основного кода. Это позволяет, в частности, не включать тесты в итоговую сборку проекта. Кроме того, JUnit обладает целым рядом дополнительных преимуществ, например:</p>
5 <p>JUnit - это уже фреймворк. Он обладает своей собственной точкой входа (классом/методом, с которого начинается выполнение тестов), что делает его фактически второй программой, которая живёт отдельно от вашего основного кода. Это позволяет, в частности, не включать тесты в итоговую сборку проекта. Кроме того, JUnit обладает целым рядом дополнительных преимуществ, например:</p>
6 <ul><li>параллельный запуск тестов</li>
6 <ul><li>параллельный запуск тестов</li>
7 <li>подготовка данных</li>
7 <li>подготовка данных</li>
8 <li>создание динамических тестов</li>
8 <li>создание динамических тестов</li>
9 <li>и многое, многое другое</li>
9 <li>и многое, многое другое</li>
10 </ul><h2>Подключение</h2>
10 </ul><h2>Подключение</h2>
11 <p>JUnit интегрирован в процесс создания проекта на Gradle. Во время инициализации проекта, Gradle попросит выбрать тестовый фреймворк:</p>
11 <p>JUnit интегрирован в процесс создания проекта на Gradle. Во время инициализации проекта, Gradle попросит выбрать тестовый фреймворк:</p>
12 <p>Полный процесс инициализации Gradle-проекта описан<a>тут</a>. В результате получится<a>такая</a>структура.</p>
12 <p>Полный процесс инициализации Gradle-проекта описан<a>тут</a>. В результате получится<a>такая</a>структура.</p>
13 <p>Теперь можно создавать классы и тестировать их. Создадим класс SomeClass со статическим методом sum(), который находит сумму двух чисел:</p>
13 <p>Теперь можно создавать классы и тестировать их. Создадим класс SomeClass со статическим методом sum(), который находит сумму двух чисел:</p>
14 <p>Класс SomeClassTest.java с тестами для метода sum будет выглядеть следующим образом:</p>
14 <p>Класс SomeClassTest.java с тестами для метода sum будет выглядеть следующим образом:</p>
15 <p>Аннотация @Test "показывает" фреймворку, что этот метод является тестом, а класс Assertions является основным для большинства тестовых методов.</p>
15 <p>Аннотация @Test "показывает" фреймворку, что этот метод является тестом, а класс Assertions является основным для большинства тестовых методов.</p>
16 <p>Этого достаточно, чтобы создать простейший Gradle-проект с JUnit5 в качестве тестового фреймворка. Создайте подобный проект на своём компьютере и наберите ./gradlew test в терминале для запуска тестов. JUnit5 сам найдёт все методы помеченные аннотацией @Test и, если хотя бы в одном из них тесты не пройдут, то выполнение завершится с ошибкой.</p>
16 <p>Этого достаточно, чтобы создать простейший Gradle-проект с JUnit5 в качестве тестового фреймворка. Создайте подобный проект на своём компьютере и наберите ./gradlew test в терминале для запуска тестов. JUnit5 сам найдёт все методы помеченные аннотацией @Test и, если хотя бы в одном из них тесты не пройдут, то выполнение завершится с ошибкой.</p>