[NEWS] AssertJ 3.6.X - Интервью с Джоэлем Костиглиолой
1. Вступление
AssertJ - это библиотека, которая предоставляет быстрые утверждения для Java. Вы можете прочитать об этом большеhere иhere.
Недавно была выпущена версия 3.6.0 вместе с двумя небольшими выпусками исправлений ошибок 3.6.1 и 3.6.2.
СегодняJoel Costigliola - создатель библиотеки - с нами и расскажет вам немного больше о выпуске и планах на будущее.
«Мы пытаемся сделатьAssertJ действительно ориентированным на сообщество»
2. Версии 2.6.0 и 3.6.0 были выпущены довольно много одновременно. В чем разница между ними?
2.x versions target Java 7 while 3.x target Java 8. Еще один способ увидеть это заключается в том, что 3.x = 2.x + специфические особенности Java 8.
3. Какие наиболее заметные изменения / дополнения появились в версии 3.6.0 / 2.6.0?
2.6.0 ended up having different small features but no big additions. Если бы мне пришлось выбирать, наиболее интересными были бы те, которые связаны с подавленными исключениями: -hasSuppresedException() -hasNoSuppresedExceptions()
3.6.0 additionally got a way of checking multiples assertions on array/iterable/map entry elements:
4. Начиная с выпуска 3.6.0, появились два выпуска исправлений (3.6.1, 3.6.2). Не могли бы вы рассказать нам немного подробнее, что там произошло и что нужно было исправить?
В 3.6.1filteredOn(Predicate) работал только сList, но не сIterable, довольно плохо.
В 3.6.2 мы не думали о извлечении свойств из метода получения по умолчанию в Java 8, оказалось, что он не работал "из коробки" после некоторого внутреннего рефакторинга.
Я спросил пользователей, могут ли они ждать следующего релиза, репортер сказал, что он в порядке, но другой пользователь хотел, чтобы я выпустил новую версию. We are trying to make AssertJ really community-oriented, так как вырезание релиза обходится недорого (кроме части документации), я обычно не вижу никаких проблем с выпуском.
5. Сталкивались ли вы с любыми интересными техническими проблемами при работе над новейшей версией?
Я укажу на проблему, с которой я столкнулся, работая над следующей версией 3.7.0, которая должна выйти через несколько недель.
Java 8 требовательна к «неоднозначным» сигнатурам методов. Мы добавили новый метод assertThat, который принимаетThrowingCallable (простой класс, который вызывает исключениеCallable), оказалось, что Java 8 путает его с другим методомassertThat, который принимает Iterable!
Это было для меня самым удивительным, поскольку я не вижу двусмысленности между ними.
6. Планируете ли вы новый релиз в ближайшее время? Что-нибудь, что будет использовать дополнения Java 9?
В следующие недели / месяц. We usually try to have releases every few months or when there are major additions.с
Паскаль Шумахер, который присоединился к команде AssertJ, проделал некоторую работу над Java 9, чтобы проверить совместимость, некоторые вещи не работают, в основном те, которые полагаются на самоанализ, поскольку Java 9 изменяет правила доступа. Что мы сделаем, это запустим ветку 4.x, которая будет ориентирована на Java 9, следуя той же стратегии, что и 3.x против 2.x, у нас будет 4.x = 3.x + возможности Java 9.
Once 4.0 is officially released we will likely drop 2.x active development, но продолжайте принимать PR, поскольку у нас нет возможности поддерживать синхронизацию 3 версий, я имею в виду, что мы сообщаем о любых изменениях от версии nx до версии n + 1.x, поэтому добавляем что-то в 2.x нужно будет сообщать как в 3.x, так и в 4.x, а это слишком большая работа на данный момент.