JUnit JSON を検証したい

JUnit テストで生成されるJSON を期待値 JSONテキストと比較して検証したい。
hamcrest-json というのを使うとできる。

Hamcrest Related Projects
ここから、
GitHub - hertzsprung/hamcrest-json: Hamcrest matchers for comparing JSON documents
を辿ると見つかる。
現在、Maven セントラルリポジトリにあるバージョンは、0.2 であった。

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

使用サンプル

@Test
public void test() {
    // TODO テスト実行
    try{
        // 期待値JSON読込み
        String expectJson = Files.readString(
        Path.of(Thread.currentThread().getContextClassLoader()
                         .getResource("excpect.json").toURI())
               , StandardCharsets.UTF_8);
        
        //String actualJson = テストで取得する結果 JSON テキスト
        
        // 検証
        MatcherAssert.assertThat(actualJson, SameJSONAs.sameJSONAs(expectJson));
   
    }catch(IOException e){
        e.printStackTrace();
        Assert.fail();
    }catch(URISyntaxException e){
        e.printStackTrace();
        Assert.fail();
    }
}

キーが多い時
expectJson より、actualJson で、追加キーが存在する場合は、、

MatcherAssert.assertThat(actualJson, SameJSONAs.sameJSONAs(expectJson).allowingExtraUnexpectedFields());

配列の順番を問わない
expectJson と、actualJson で、中の配列の値が変わらず順番を問わない場合は、、

MatcherAssert.assertThat(actualJson, SameJSONAs.sameJSONAs(expectJson).allowingAnyArrayOrdering());

キーが多い時 AND 配列の順番を問わない
allowingExtraUnexpectedFields() と、allowingAnyArrayOrdering() を連結で良い

MatcherAssert.assertThat(actualJson, SameJSONAs.sameJSONAs(expectJson).allowingExtraUnexpectedFields().allowingAnyArrayOrdering());