私は Eclipse の達人ではありませんので、私の不器用さをお許しください。
Eclipse で Assert.assertEquals(obj1,obj2) を呼び出して失敗した場合、IDE に obj1 と obj2 を表示させるにはどうすればよいですか?
私はJExampleを使用していますが、違いはないと思います。
編集:これが私が見たものです:(ソース:yfrog.com)
。
Junit Eclipse プラグインは、障害が発生した場合にオプションを提供します: 「実際の結果を予想されるテスト結果と比較する」。このビューは、従来のコンテンツ比較ツールに十分近いものです。
問題は、オブジェクトを使用して記述assertEquals()
した場合にのみ使用できることです (スクリーンショットでは、コーナーのオプションがクラス
String
なしで提案されていないことがわかります)。String
アサーションでオブジェクトに使用できtoString()
ますが、それは良い解決策ではありません:
toString()
しequals(Object)
ます...一方の変更は、他方の変更を伴う必要があります。toString()
は、Java セマンティックでオブジェクトを識別するためではなく、1 つのオブジェクトの状態をデバッグするための便利なメソッドを返す必要があります ( equals(Object)
)。私によると、JUnit Eclipse プラグインには機能が欠けていると思います。
比較が失敗した場合、オブジェクトを比較しない場合でも、メソッドString
に依存する 2 つのオブジェクトの比較を提供する必要がありますtoString()
。
2 つの等しくないオブジェクトを比較する最小限の視覚的な方法を提供できます。
もちろん、equals(Object)
は必ずしも と相関しているわけではないのでtoString()
、強調された相違点は目で調べる必要がありますが、それはすでに非常に優れた基礎であり、とにかく、比較ツールがないよりははるかに優れています。
JUnit ビューの情報だけでは不十分な場合は、java.lang.AssertionError などにいつでも例外ブレークポイントを設定できます。テストを実行すると、例外が実際にスローされる直前にデバッガーが停止します。
Assert.assertEquals()
toString()
期待されるオブジェクトと実際のオブジェクトの表現を、それがスローするメッセージに入れ、AssertionFailedError
EclipseはそれをJUnitビューの「failuretrace」部分に表示します。
(ソース:ibm.com)
検査したい複雑なオブジェクトがある場合は、デバッガーを使用して、内部にブレークポイントを設定する必要がありますAssert.assertEquals()
何を見てるの?
assertTrue()を実行して失敗すると、nullが表示されます。
ただし、assertEqualsを実行すると、期待した内容と実際に得られた内容が表示されるはずです。
JUnitを使用している場合は、JUnitビューを確認し、失敗したテストにマウスを移動していることを確認してください。
FEST Assertは、比較するオブジェクトが文字列でない場合でも、アサーションが失敗した場合に比較ダイアログを表示します。ブログで詳しく説明しました。
比較対象が文字列の場合は、スタック要素をダブルクリックすると、Eclipse の差分を示すダイアログがポップアップ表示されます。
ただし、これは文字列でのみ機能します。一般的なケースでは、本当の理由を確認する唯一の方法は、ブレークポイントをインストールしてそこにステップインすることです。