1. 序章

AssertJ は、Javaに流暢なアサーションを提供するライブラリです。 詳細については、こちらおよびこちらをご覧ください。

最近、3.6.0バージョンが、2つの小さなバグ修正リリース3.6.1および3.6.2とともにリリースされました。

本日、ライブラリの作成者である Joel Costigliola が同行し、リリースと今後の計画についてもう少し詳しく説明します。

「私たちはAssertJを本当にコミュニティ指向にしようとしています」

2. バージョン2.6.0と3.6.0は、かなり同時にリリースされました。 それらの違いは何ですか?

2.xバージョンはJava7をターゲットにし、3.xはJava8をターゲットにします。 これを確認する別の方法は、3.x = 2.x +Java8固有の機能です。

3. 3.6.0 / 2.6.0で表示された最も注目すべき変更/追加は何ですか?

2.6.0は、さまざまな小さな機能を備えていましたが、大きな追加はありませんでした。 私が選択しなければならない場合、最も興味深いものは、抑制された例外に関連するものです。– hasSuppresedException() hasNoSuppresedExceptions()

3.6.0はさらに、配列/反復可能/マップエントリ要素の複数のアサーションをチェックする方法を取得しました。
allSatisfy()
hasEntrySatisfying()

4. 3.6.0のリリース以降、2つのバグ修正リリースが表示されました(3.6.1、3.6.2)。 そこで何が起こったのか、何を修正する必要があるのか、もう少し教えていただけますか?

3.6.1では、 filteredOn(Predicate) List でのみ機能し、 Iterable、では機能しませんでした。

3.6.2では、Java 8のデフォルトのgetterメソッドからプロパティを抽出することは考えていませんでした。内部リファクタリングを行った後、そのままでは機能しなかったことがわかりました。

次のリリースを待つことができるかどうかをユーザーに尋ねたところ、バグレポーターから、待っても大丈夫だと言われましたが、別のユーザーがそれを望んでいたので、新しいバージョンをリリースしました。 リリースのカットは安価であるため(ドキュメントの部分を除いて)、AssertJを本当にコミュニティ指向にしようとしています。通常、リリースに問題はありません。

5. 最新のリリースに取り組んでいるときに、興味深い技術的な課題に遭遇しましたか?

数週間以内にリリースされるはずの次のリリース3.7.0での作業で発生した問題を指摘します。

Java 8は、「あいまいな」メソッドシグネチャに注意を払っています。 ThrowingCallable Callable が例外をスローする単純なクラス)を受け取る新しいassertThatメソッドを追加しましたが、Java8が別のassertThat[と混同していることが判明しました。 Iterable!をとるX205X]メソッド

両者の間にあいまいさが見られないので、それは私にとって最も驚くべきことでした。

6. すぐに新しいメジャーリリースを計画していますか? Java 9の追加機能を利用するものはありますか?

次の数週間/1ヶ月。 通常、数か月ごと、または主要な追加があるときにリリースを行うようにしています。

AssertJチームに加わったPascalSchumacherは、互換性をチェックするためにJava 9でいくつかの作業を行いましたが、Java 9がアクセスルールを変更して以来、主にイントロスペクションに依存するものなど、いくつかの機能が動作しません。 3.x対2.xと同じ戦略に従って、Java 9に焦点を合わせた4.xブランチを開始し、4.x = 3.x +Java9の機能を使用します。

4.0が正式にリリースされると、2.xのアクティブな開発を中止する可能性がありますが、3つのバージョンの同期を維持する能力がないため、PRを引き続き受け入れます。つまり、nxバージョンからn + 1.xバージョンであるため、2.xに何かを追加すると、3.xと4.xの両方でレポートする必要があり、現時点ではそれは大変な作業です。