JUnit Testcases в Java: простое руководство по JUnit 5.7.1 Hello World с подробностями «все в одном»
Опубликовано: 2019-10-30
Что такое Юнит?
JUnit — это простая, мощная среда с открытым исходным кодом для написания и запуска повторяемых тестов. Я люблю тестовые примеры JUnit. Во время разработки моего Java-проекта я широко использую JUnit для покрытия кода. Это экземпляр архитектуры xUnit для фреймворков модульного тестирования.
Возможности JUnit включают в себя:
- Утверждения для тестирования ожидаемых результатов
- Тестовые приспособления для обмена общими тестовыми данными
- Test runners для запуска тестов
В этом уроке я расскажу о пунктах 1 и 3. В вашем проекте вам понадобятся следующие зависимости maven.
1 2 3 4 5 |
< dependency > < groupId > junit < / groupId > < artifactId > junit < / artifactId > < version > 4.12 < / version > < / dependency > |
Приступим к написанию кода.
Шаг 1
Создайте проект CrunchifyJunitTest
и укажите пакет com.crunchify.junit
. Вот структура пакета для быстрого ознакомления.

Шаг 2
Щелкните правой кнопкой мыши CrunchifyJunitTest
=> Новый класс => CrunchifyJunitTest.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package com . crunchify . junit ; /** * @author Crunchify * */ import static org . junit . Assert . assertEquals ; import org . junit . Test ; public class CrunchifyJunitTest { @ Test public void testingCrunchifyAddition ( ) { assertEquals ( "Here is test for Addition Result: " , 30 , addition ( 27 , 3 ) ) ; } @ Test public void testingHelloWorld ( ) { assertEquals ( "Here is test for Hello World String: " , "Hello + World" , helloWorld ( ) ) ; } public int addition ( int x , int y ) { return x + y ; } public String helloWorld ( ) { String helloWorld = "Hello +" + " World" ; return helloWorld ; } } |
Шаг 3
Eclipse предложит и автоматически добавит зависимость org.junit.Test
, как только вы наберете @Test .

Шаг-4
Чтобы протестировать тест JUnit
- Щелкните правой кнопкой мыши по классу
- Нажмите «Запуск от имени»
- Нажмите на
JUnit Test
Вы должны увидеть что-то вроде этого.

Шаг-5
Попробуйте изменить параметр ожидаемого значения метода с 30 => 300
и с Hello World => Hello -- World
и снова проверьте.
1 2 3 4 5 6 7 8 9 |
@ Test public void testingCrunchifyAddition ( ) { assertEquals ( "Here is test for Addition Result: " , 300 , addition ( 27 , 3 ) ) ; } @ Test public void testingHelloWorld ( ) { assertEquals ( "Here is test for Hello World String: " , "Hello -- World" , helloWorld ( ) ) ; } |

Шаг-6
Теперь давайте запустим тот же тестовый пример via other java
-программы. Создайте CrunchifyRunnerJUnit.java

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
package com . crunchify . junit ; import org . junit . runner . JUnitCore ; import org . junit . runner . Result ; import org . junit . runner . notification . Failure ; /** * @author Crunchify * */ public class CrunchifyRunnerJUnit { public static void main ( String [ ] args ) { Result result = JUnitCore . runClasses ( CrunchifyJunitTest . class ) ; for ( Failure failure : result . getFailures ( ) ) { System . out . println ( failure . toString ( ) ) ; } if ( result . wasSuccessful ( ) ) { System . out . println ( "Both Tests finished successfully..." ) ; } } } |
Шаг-7
Запустите CrunchifyRunnerJUnit.java
как Java Application
.
Шаг-8
В случае 1- 1st code
(правильный ожидаемый параметр) вы должны увидеть такой вывод:
1 |
Both Tests finished successfully . . . |
Шаг-9
В случае 2- 2nd code
(неверный ожидаемый параметр) вы должны увидеть что-то вроде этого:
1 2 |
testingCrunchifyAddition ( com . crunchify . junit . CrunchifyJunitTest ) : Here is test for Addition Result : expected : < 300 > but was : < 30 > testingHelloWorld ( com . crunchify . junit . CrunchifyJunitTest ) : Here is test for Hello World String : expected : < Hello [ -- ] World > but was : < Hello [ + ] World > |
И все готово. Дайте мне знать, если вы обнаружите какие-либо проблемы с запуском этого кода.
Доступная аннотация в тестовом примере JUnit:
Аннотация | Описание |
---|---|
@Test публичный недействительный метод () | Аннотация @Test указывает, что метод является методом тестирования. |
@Перед публичным недействительным методом() | Будет выполнять метод перед каждым тестом. Этот метод может подготовить тестовую среду (например, прочитать входные данные, инициализировать класс). |
@После метода public void() | Будет выполнять метод после каждого теста. Этот метод может очистить тестовую среду (например, удалить временные данные, восстановить значения по умолчанию). |
Публичный недействительный метод @BeforeClass() | Выполнит метод один раз, перед началом всех тестов. Это можно использовать для выполнения трудоемких действий, например, для подключения к базе данных. |
Публичный недействительный метод @AfterClass() | Выполнит метод один раз после завершения всех тестов. Это можно использовать для выполнения действий по очистке, например, для отключения от базы данных. |
@Игнорировать | Будет игнорировать метод тестирования. Это полезно, когда базовый код был изменен, а тестовый пример еще не адаптирован. Или если время выполнения этого теста слишком велико, чтобы его можно было включить. |
@Test (ожидаемый = Exception.class) | Сбой, если метод не выдает указанное исключение. |
@Тест (время ожидания = 100) | Сбой, если метод занимает больше 100 миллисекунд. |
Доступные методы проверки утверждений:
Заявление | Описание |
---|---|
сбой (строка) | Пусть метод не работает. Может использоваться для проверки того, что определенная часть кода не достигнута. Или иметь неудачный тест до того, как тестовый код будет реализован. |
assertTrue (истина) / assertTrue (ложь) | Всегда будет верно/ложно. Может использоваться для предварительного определения результата теста, если тест еще не реализован. |
assertTrue([сообщение], логическое условие) | Проверяет, что логическое условие истинно. |
assertsEquals([Строковое сообщение], ожидаемое, фактическое) | Проверяет, что два значения совпадают. Примечание: для массивов проверяется ссылка, а не содержимое массивов. |
assertsEquals([Строковое сообщение], ожидаемое, фактическое, допуск) | Проверьте, совпадают ли значения float или double. Допуск — это количество десятичных знаков, которое должно быть одинаковым. |
assertNull([сообщение], объект) | Проверяет, что объект является нулевым. |
assertNotNull([сообщение], объект) | Проверяет, что объект не является нулевым. |
assertSame([String], ожидаемый, фактический) | Проверяет, что обе переменные относятся к одному и тому же объекту. |
assertNotSame([String], ожидаемый, фактический) | Проверяет, что обе переменные относятся к разным объектам. |