[NEWS]AssertJ 3.6.X - Интервью с Джоэлем Костиглиолой

[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, а это слишком большая работа на данный момент.