25

IntelliJ Ideaが2つのオブジェクト(文字列)を比較するための優れた方法を提示するメッセージをログに出力できるようにしたいと思います。これは、失敗したjunitアサートによってログに記録されたエラーメッセージに対して自動的に発生します。

assertEquals( "some \ nString"、 "another \ nString");

=>
org.junit.ComparisonFailure:<クリックして違いを確認>
    org.junit.Assert.assertEquals(Assert.java:123)で
    org.junit.Assert.assertEquals(Assert.java:145)で
    com.something.DummyTest.testDummy(DummyTest.java:89)で

<クリックして違いを表示>エントリは、実際にはIntellijIdeaの出力ウィンドウにリンクとして表示されます。リンクをクリックすると、比較ウィンドウが開き、2つの値が表示されます(2つのファイルを比較する場合と同じです)。

比較する複数のオブジェクトをログに記録したいので、単に例外をスローすることは受け入れられません。私はすでにテキストを記録しようとしましたが、2つのテキストを比較するという考えを納得させることができませんでした。

4

2 に答える 2

34

IntelliJ IDEA は、ハードコーディングされた正規表現を使用しています。テキストがパターンと一致する場合は、クリックして違いを表示することをお勧めします。

パターンは次のとおりです。

expected:<bla-blah> but was:<blah-blah-blah>

assertEquals出力はまたはの形式と一致する必要がありますassertThat

正確なパターンは IDEA のコードのあちこちに散らばっていますが、いくつかはhereなどです。

于 2012-06-08T08:46:16.420 に答える