hamcrest-json を JUnit 以外で使用する

2つのJSONを比較するのに、JUnit だけで使用するのはもったいないと思った。

<dependency>
   <groupId>uk.co.datumedge</groupId>
   <artifactId>hamcrest-json</artifactId>
   <version>0.2</version>
</dependency>

このようにテストスコープを外して使用
安易であるが比較メソッドも以下のように用意する。

import org.hamcrest.MatcherAssert;
import uk.co.datumedge.hamcrest.json.SameJSONAs;
public static boolean sameJson(String realJson, String expectJson) {
    try{
        MatcherAssert.assertThat(realJson, SameJSONAs.sameJSONAs(expectJson));
        return true;
    }catch(AssertionError e) {
        return false;
    }
}
public static boolean sameJsonAnyKey(String realJson, String expectJson) {
    try{
        MatcherAssert.assertThat(realJson, SameJSONAs.sameJSONAs(expectJson).allowingExtraUnexpectedFields());
        return true;
    }catch(AssertionError e) {
        return false;
    }
}
public static boolean sameJsonAnyOrder(String realJson, String expectJson) {
    try{
        MatcherAssert.assertThat(realJson, SameJSONAs.sameJSONAs(expectJson).allowingAnyArrayOrdering());
        return true;
    }catch(AssertionError e){
        return false;
    }
}
public static boolean sameJsonAnyKeyOrder(String realJson, String expectJson) {
    try{
        MatcherAssert.assertThat(realJson, SameJSONAs.sameJSONAs(expectJson)
                .allowingExtraUnexpectedFields().allowingAnyArrayOrdering());
        return true;
    }catch(AssertionError e){
        return false;
    }
}

boolean sameJson(String realJson, String expectJson)
同じキー、値が同じかどうか。

boolean sameJsonAnyKey(String realJson, String expectJson)
expectJson より、realJson で、異なるキー値があるのはOK
つまり、realJson は、expectJson に含まれる。

boolean sameJsonAnyKeyOrder(String realJson, String expectJson)
値である配列の順番が異なっても良い。

boolean sameJsonAnyOrder(String realJson, String expectJson)
expectJson より、realJson で、異なるキー値があるのはOK、
AND 値である配列の順番が異なっても良い。