Обновить

JUnit 4.9 зарелизило

Java
Несколько часов назад на github-е популярного TDD-фреймворка JUnit появилась финальная версия JUnit 4.9. Что же вошло в долгожданный релиз?

Новые Правила


В основном изменения коснулись введенных в предыдущей версии Правил (@Rule). Как и прежде функциональность тестов можно расширять дополнительными Правилами на уровне методов. Теперь появилась возможность определять Правила для выполнения целых классов и даже тестовых сюит. В обоих случаях результат достигается путем определения статического поля с новой аннотацией @ClassRule в соотв. тест-классе, либо в сюите.

И да, все производные от ParentRunner включая действующий по-умолчанию BlockJUnit4ClassRunner корректно обрабатывают новый вид правил.

Пример тестовой сюиты, которая создает соединение с сервером один единственный раз и закрывает его после выполнения всех тестов сюиты:

<br/>@RunWith(Suite.class)<br/>@SuiteClasses({A.class, B.class, C.class})<br/>public class UsesExternalResource {<br/> public static Server myServer= new Server();<br/> <br/> @ClassRule<br/> public static ExternalResource resource= new ExternalResource() {<br/> @Override<br/> protected void before() throws Throwable {<br/> myServer.connect();<br/> };<br/> <br/> @Override<br/> protected void after() {<br/> myServer.disconnect();<br/> };<br/> };<br/>}<br/> <br/>
Хозяйке на заметку: в свете данных нововведений прежний интерфейс MethodRule устарел и получил статус deprecated. Разработчикам Правил следует работать с новым интерфейсом TestRule, чтобы дать возможность применять их как с @Rule так и с @ClassRule.

Правила в комплекте JUnit 4.9 в большинстве своем уже переехали на новый интерфейс. Для большинства пользователей смена API по-идее пройдет незаметно и не потребует изменений в существующих тестах.

Maven – теперь официально


До сих пор сборкой пакетов для Maven занимались анонимные добровольцы и качество результатов оставляло желать лучшего. Начиная с версии 4.9 команда разработчиков JUnit перенимает эту задачу на себя. Замечу, однако, что судя по сорцам официальная сборка JUnit по-прежнему происходит в Ant. Будем надеяться, что ребята, все-же справятся с новой задачей грамотно и не наступят, к примеру, на старые грабли с транзитивной зависимостью пакета junit-dep от hamcrest-core (который до сих пор приходится выпиливать exclusion-ом).

Что еще?


Помимо косметических изменений в структуре проекта (текст GPL теперь часть сорцов, Ant-сборка теперь быстрее) были пофиксены серьезные баги:

— github#98: assumeTrue() does not work with expected exceptions
— github#74: Categories + Parameterized
— github#38: ParentRunner filters more than once
— github#248: protected BlockJUnit4ClassRunner#rules method removed from 4.8.2
— github#187: Accidental dependency on Java 6
— github#163: Bad comparison failure message when using assertEquals(String, String)
— github#227: ParentRunner now assumes that getChildren() returns a modifiable list

Вместо заключения


Список изменений в целом оправдывает minor-release. Выражаю разработчикам глубокую благодарность за их безвозмездный вклад в повышение качества кода и поздравляю хабровчан с хорошей новостью.

Теги:javatestingjunittddтестирование приложений
Хабы: Java
Рейтинг +25
Количество просмотров 3,8k Добавить в закладки 12
Комментарии
Комментарии 6

Похожие публикации

Java Developer (Team lead)
от 250 000 ₽Reliable systemsПензаМожно удаленно
JAVA - разработчик
от 90 000 до 150 000 ₽Строительный ДворМоскваМожно удаленно
Разработчик JAVA
от 100 000 ₽IT Smart FinanceНовосибирск
Java разработчик
от 150 000 до 400 000 ₽Spice IT RecruitmentМожно удаленно
Java developer
от 200 000 до 400 000 ₽EmphasoftСанкт-Петербург

Лучшие публикации за сутки