Информационный бюллетень SitePoint Java VII (02 декабря 2016 г.)
Вы будете удивлены, узнав, что мы также доставляем этот информационный бюллетень по электронной почте. Чтобы получать обновления о нашем охвате Java каждую вторую пятницу, зарегистрируйтесь здесь.
Прошлая неделя была важной для JUnit 5! Во вторник вышел новый Java Magazine, который поместил проект на обложку и посвятил ему три статьи. В среду проект выпустил Milestone 3, улучшающий API для инструментов, а также совместимость с JUnit 4.
Следующая веха для JUnit 5
В том маловероятном случае, если вы еще не слышали о JUnit 5, позвольте мне быстро представить его. Если вы это знаете, просто пропустите следующий раздел, чтобы я мог рассказать вам то, чего вы еще не знаете.
Что вы имеете в виду, JUnit 5?
В 2015 году пара основных коммиттеров JUnit и несколько других разработчиков, проявляющих интерес к проекту, решили, что пришло время его переписать. Причины:
- Потребность в лучшей архитектуре, обеспечивающей ремонтопригодность JUnit и предоставляющей возможности для развития.
- Необходимость в лучшей модели расширения, которая избавляет от ограничений и сложностей бегунов и правил.
- Лямбды!
Так родилась JUnit Lambda, которая осенью 2015 года собрала достаточно оплачиваемого времени разработки от работодателей и достаточно финансирования от толпы для согласованных шестинедельных усилий по запуску следующей версии JUnit. Вышел прототип в ноябре 2015 года, за ним последовала альфа-версия в феврале 2016 года, две вехи (М1 и М2) в июле и третья веха 30 ноября.
Вполне вероятно, что последуют как минимум еще две вехи, прежде чем можно будет ожидать выпуска общедоступной версии. Мое лучшее предположение, когда это произойдет, — второй или третий квартал 2017 года.
Чтобы получить представление о том, как выглядит проект и куда он хочет двигаться, ознакомьтесь с Состоянием Союза, которое я написал в октябре. Он уже не совсем актуален, но пока изменилось лишь несколько деталей. Если пока это слишком сложно, представьте себе JUnit 4 с множеством продуманных улучшений. На поверхности все изменилось — настоящие жемчужины лежат глубже.
Скажи мне то, чего я еще не знаю!
Хорошо, позвольте мне попробовать. Вы знали…
… что существует отличное руководство пользователя (версия M3 и разработка), которое охватывает большую часть того, что вам нужно знать, всего в 11 000 слов? Также: Javadoc (M3, текущий).
… что ZeroTurnaround опубликовал небольшую шпаргалку по JUnit 5? Если вы все еще новичок в JUnit 5, статья и лист — хороший способ начать работу.
… что после IntelliJ Eclipse — вторая IDE с встроенной поддержкой JUnit 5? Ранний доступ доступен в 4.7 M3.
… что команда Maven недавно внедрила прототип поставщика Surefire, реализованный командой JUnit? Нативная поддержка Maven уже не за горами (хотя проблема в трекере Apache малоактивна). К сожалению, я ничего подобного не слышал от проекта Gradle, в котором, судя по моим поискам, пока нет даже задачи для JUnit 5. При этом существует прототип плагина Gradle, который, как и провайдер Surefire, работает очень хорошо.
… запускать параллельно тесты, написанные в версиях 4 и 5, очень просто? Для более подробного ознакомления с этим ознакомьтесь со статьей Мерта Калискана в журнале Java Magazine.
… что некоторые правила JUnit 4 работают в JUnit Jupiter? В настоящее время правила ExternalResource
, Verifier
и ExpectedException
, а также все их подклассы поддерживаются и могут использоваться в тестах, написанных для Jupiter API. Подробности смотрите в Руководстве.
И, наконец, знаете ли вы, что команда JUnit рада вас слышать? Если у вас есть идея, как улучшить JUnit, или вы хотите оставить отзыв после того, как опробовали его, не стесняйтесь пинговать их в Twitter или, что предпочтительнее, открыть вопрос. Если вы хотите внести свой вклад, тем лучше! Существует ярлык для захвата, который поможет вам найти задачи для начала.
Что нового в Milestone 3?
Так как M3 был выпущен совсем недавно, давайте быстро заглянем в примечания к выпуску. Большинство изменений произошло в платформе JUnit (что? почитайте об архитектуре), которая по своей природе менее захватывающая для таких пользователей, как мы. Тем не менее, там спрятано несколько интересных вещей:
- По умолчанию каждый класс, оканчивающийся на
Test
илиTests
, рассматривается для выполнения теста. - Реализовано/улучшено включение и исключение тестов по тегам, пакетам или именам классов.
- Если вы использовали средство запуска консоли, обратите внимание, что несколько флагов командной строки имеют новые имена.
- Чтобы улучшить поддержку альтернативных механизмов тестирования, была введена новая аннотация
@Testable
, на которую инструменты (особенно IDE) должны обращать внимание при попытке определить, что может быть выполнено в качестве теста.
Юпитер, который содержит API, для которого мы пишем тесты, претерпел гораздо меньше существенных изменений — вот более интересные:
- Новые утверждения
assertTimeout
иassertTimeoutPreemptively
можно использовать для провала или даже отказа от тестов, которые занимают слишком много времени. @BeforeAll
и@AfterAll
теперь можно объявлять в статических методах интерфейсов.- Ограниченная поддержка правил JUnit 4, но мы уже рассмотрели это выше.
Дай Моара!
Ладно, ладно, господи… Если вам интересно подробно изучить модель расширения, включая некоторые детали реализации, прочитайте мою статью в журнале Java. И последнее, но не менее важное: речь Devoxx BE от меня и от Сэма Браннена. Его в два раза больше, и он работает над проектом и действительно знает, о чем говорит, поэтому, если у вас есть время, посмотрите его выступление.
Что еще происходит?
Ничего особенного (о чем я слышал). AssertJ выпустил версию 3.6.0 с парой небольших улучшений, а вскоре исправляющую ошибки версию 3.6.1. Hibernate выпустил 5.2.5, который позволяет использовать ByteBuddy вместо Javassist — то, что, вероятно, станет стандартом в 6.0.
Подведение итогов
Позвольте мне оставить вас с парой статей, которые, я думаю, могут вас заинтересовать. На сайте SitePoint:
Другие интересные посты о Java:
- Java 8 Streams: 10 недостающих функций Джона МакКлина
- Вы должны создать или сгенерировать свою табличную модель? Торбен Янссен
- Геолокация по IP в Java Евгения Баелдунга
- Умерло ли стандартное ведение журналов Java? Log4j vs Log4j2 vs Logback vs java.util.logging Алекса Житницкого
Посты о разработке ПО в целом:
- FunctionLength Мартина Фаулера
- 12 признаков того, что вы работаете на фабрике фич Джона Катлера
Желаю вам хорошо провести время!
пока… Николай
PS: Не забудьте подписаться. :)