Во второй части статьи поговорим об аннотациях и JUnit 4. Начало смотрите здесь.
Работа с JUnit 4
Второй вариант реализации поставленной изначально задачи – запуск JUnit 4. Здесь из Джавы версии 5.0 были добавлены новые функции. Основная – это annotations. Через аннотации допускается объявление тестов. Также здесь присутствует обратная совместимость с предыдущей разработкой фреймворка.
Вот пример, который использовался ранее. Только здесь используются новые возможности и функции:

Ключевые изменения в версии JUnit 4
Для того, чтобы выбрать, каким вариантом проверки пользоваться, важно понимать, какие корректировки внедрены в новой разработке. К ним относят следующие моменты:
- Допускается наследование от Assert, но оно не является обязательным.
- Внедрена аннотация before. Задает методы, которые вызываются перед каждым тестом. Методы – public void. В приведенном примере предустановка – генерирование тестовых данных.
- Допускается использование BeforeClass. Отвечает данная annotation за методы, вызываемые до того, как будет создан экземпляр тест-класса. Здесь они public static void. Применяется, когда у класса несколько проверок с разнообразными предустановками или оные задействуют одинаковые данные.
- After – методы, вызываемые после выполнения тестов. Относятся к типу public void. Тут расположены операции высвобождения ресурсов. В рассматриваемом примере это – очистка тестовой информации.
- AfterClass по своему смыслу похож на BeforeClass. Отвечает за методы, которые реализовываются после проведения проверки.
- Test в виде аннотации – это тестовые методы. В данной «области» простираются непосредственные проверки. Присутствуют специальные параметры: expected – задание ожидаемого исключения и timeout – время, спустя которое, проверка получает статус «провалена».
Далее будут приведены примеры, в которых основное условие – использование аннотаций в JUnit 4.
Наглядные примеры

Выше – самый простой вариант. Но можно провести игнорирование выполнения теста. Для этого используется аннотации в JUnit под названием Ignore:

Также можно задействовать те или иные правила, заданные программером до того, как будет реализована проверка. Возможность появляется, если соответствующие манипуляции расширят функционал рассматриваемого «элемента». Чтобы справиться с этой задачей, нужно:
- создать public поле от MethodRule;
- задействовать аннотацию с ключевым словом Rule.
Выглядит это так:

Проверку можно сконфигурировать при помощи аннотации RunWith. Тестовые классы, содержащие тестовые методы, иногда объединяют воедино:

Для объединения оных в группы применяется Categories. В тесте сначала определяется «категория», а затем – настраиваются запускаемые категории тестов в Suite:

Об аннотациях
Аннотация в JUnit – синтаксические метаданные, заданные в специальной форме. Добавляются в первоначальный написанный код. Применяются для того, чтобы анализировать приложение, компилировать его или выполнять.
Аннотации могут быть приписаны к:
- пакетам;
- классам;
- методам;
- параметрам;
- переменным (int и не только).
Отвечают подобные «объекты» за такие функции как:
- передача информации информатору/компилятору;
- передача данных инструментарию, используемому для генерирования иных кодификаций, настроек и так далее;
- получение сведений посредством отражения.
Соответствующие «объекты» значительно упрощают процесс программирования. Особенно когда речь заходит о проверке кодификаций.
Основные аннотации
Представление (запись) | Принцип работы (описание) |
@Test public void testMethod() | Тестовый методы |
@Test(timeout=100) public void testMethod() | Провал теста при превышении заданного «таймаута» |
@Test (expected = MyException.class) public void testMethod() | Выбор исключения, относящегося к MyException, в противном случае — провал |
@Ignore public void testMethod() | Игнорирование заданного тестового метода |
@BeforeClass public static void testMethod() | Вызывается один раз для класса. Делается это перед тем, как выполнить проверку. Размещается инициализация, выполняемая всего лишь единожды. Пример – считывание информации, используемых в будущем в тестовых методах |
@AfterClass public static void testMethod() | Вызывается после реализации проверки для заданного класса. Тут пишут то, что выполняется один раз. Пример – прекратить соединение с БД или удалить лишнюю информацию |
@Before public static void beforeMethod() | Вызов перед каждой проверкой в пределах тестового класса. Чаще всего применяется при инициализации чего-либо |
@After public static void afterMethod() | Схож с предыдущим вариантом. Обычно характеризует деинициализацию |
Проверки Asserts и их типы
Что за проверка | Характеристика |
fail() fail(String message) | Завершение с ошибкой, провал проверки |
assertTrue(boolean condition) assertTrue(java.lang.String message, boolean condition) | Проверка «кондишн» на равенство значения по true |
assertFalse(boolean condition) assertFalse(String message, boolean condition) | Аналогично предыдущему варианту, но с false |
assertEquals(<тип> expected, <тип> actual) assertEquals(String message, <тип> expected, <тип> actual) | Удостоверение равенства, где к типу относят Object, а также переменные разных видов |
assertArrayEquals(byte[] expecteds, byte[] actuals) assertArrayEquals(String message, <тип>[] expecteds, <тип>[] actuals) | Равенство массивов |
assertNotNull(Object object) assertNotNull(String message, Object object) | Удостоверение в том, что объект не null |
assertNull(Object object) assertNull(String message, Object object) | Удостоверение в том, что заданный объект выступает в качестве пустого (null) |
assertSame(Object expected, Object actual) assertSame(String message, Object expected, Object actual) | Сверка равенства двух элементов |
JUnit без упомянутых элементов представить невозможно. Наглядные примеры, а также предложенная вниманию информация поможет разобраться, что к чему.
Важно: чтобы хорошо разбираться в основах JUnit 4, рекомендуется в первую очередь хорошенько изучить аннотирование.
Секрет успешного изучения JUnit
Разобраться с тестированием в Джаве на самом деле не так трудно. Достаточно ознакомиться с приведенным тестовым случаем. Но самостоятельно не всегда понятно, что к чему.
В таких ситуациях на помощь приходят специализированные курсы. Можно выбрать JUnit или всю Джаву для углубленного изучения. Такие занятия помогут лучше разбираться в том, что такое return, example, а также import static org и другие записи в программировании на заранее выбранном языке. С их помощью удастся понять, как:
- возвращать значения переменных;
- проводить тестирование;
- создавать сложные программы и использовать ссылки в коддинге;
- интегрировать софт друг с другом;
- работать с фреймворками и не только.
Курсы рассчитаны на срок от 2 до 12 месяцев. По выпуску выдается сертификат установленной формы. Занятия возможны в дистанционной форме.