Hamcrest Matcher を使用して 2 つの JSON オブジェクトを比較しています。比較メソッドは Gson パーサーを使用します。
マッチャーはうまく機能しますが、2 つの JSON が同じでない場合、次のようなメッセージしか表示できません。
Expected: <[{"data":"data1","application":{"id":"1"}}]>
but: <[{"data":"data1","application":{"id":"2"}}]>
これはあまり役に立ちません。どの要素が一致しないか、junit の assertEquals のようなものを示したいと思います。
expected:<...a1","application":{"[filtered":false,"id":"1"]...> but was:<...a1","application":{"[id":"2"...>
それを達成する方法はありますか?
編集:
@Override
protected void describeMismatchSafely(JsonElement item,
Description mismatchDescription) {
//mismatchDescription.appendValue(item);
assertEquals(item.toString(), originalJson.toString());
}
しかし、これは私に与えるでしょう:
expected:<...a1","application":{"[filtered":false,"id":"2"]...>
but was:<...a1","application":{"[id":"1","filtered":false],...>
唯一の違いは「id:1」と「id:2」ですが、junit はエラーの一部として JSON の順序が異なることも示しています。