主にHamcrestマッチャーでJUnitアサーションを使用するテストスイートがあります。私たちのチームの1人は、AssertJの実験を開始し、その構文、柔軟性、および宣言型性で人々に感銘を与えました。JUnitが提供する、AssertJに相当するものが見つからない機能が1つあります。それは、カスタムのアサート失敗メッセージを追加することです。
人間が読みやすいように作成されておらず、ランダムに見えるIDまたはUUIDを持つオブジェクトを比較することがよくあり、それらに含まれるデータによってそれらが何であるかを判断することは不可能です。悲しいことに、これはコードベースにとって避けられない状況です。コードベースが果たす目的の一部は、必ずしもそれが何であるかを理解せずに、他のサービス間でデータをマッピングすることです。
JUnitでは、assertThat
メソッドはString reason
パラメーターの前にパラメーターを持つバージョンを提供しますMatcher<T>
。これにより、人間にとっての比較の意味など、問題に光を当てる短いデバッグ文字列を追加するのは簡単です。
一方、AssertJは、何らかの形式のインターフェイスAssertまたはその多くの実装クラスの1つを返す無数の異なる汎用static assertThat
メソッドを提供します。このインターフェースは、失敗に含まれるカスタムメッセージを設定する標準的な方法を提供しません。
メッセージを追加するすべてのアサーションタイプに対してカスタムアサーションクラスを作成せずに、AssertJ APIまたはその拡張機能の1つからこの機能を取得する方法はありますか?
withFailMessage
。私はAssertJが好きですが、これは最悪です。