jsonSchema 単一テストのリファクタリング JUnit Jupiter

JSON スキーマ テスト スイート ファイルをプロジェクト固有のファイルから分離するためにテスト リソースをリファクタリング · 問題 #692 · networknt/json-schema-validator · GitHub

https://github.com/networknt/json-schema-validator/pull/697によって修正されました 

仕様ファイルを JSON スキーマ テスト スイートから に移動することを提案します。これにより、次のような利点が得られます。src/test/suite

  • このプロジェクトのファイルを削除または上書きする可能性が減るため、そのプロジェクトからこのプロジェクトへの更新のマージが容易になります。
  • 仕様の何が変更されたのかを正確に確認しやすくなり、準拠するためにどのような機能変更が必要かを確認しやすくなります (例: から に移動、削除された)。content.jsondraft2019-09/optionaldraft2019-09draft2019-09/optional/zeroTerminatedFloats.json
  • そのプロジェクトにリンクすることでデータを入力できるようになり、その変更をこのプロジェクトに手動でマージする必要がなくなります (Maven がソース コードの特定のバージョンをダウンロードして解凍することも可能です)src/test/suite
  • 仕様ファイルのより複雑な処理を可能にします。JSON スキーマ テスト スイートは、仕様ファイルがフォルダーのルートに表示されることを期待するようにバリデーターに通知しました。バリデーターは、フォルダー名 (例:  tests$schematests/draft2019-09)を使用するのではなく、仕様ファイルから抽出することが期待されるようになりました。

この変更は、  #690 が受け入れられるかどうかに依存します。

JSON スキーマ テスト スイートから単体テストをリファクタリングする · 問題 #690 · networknt/json-schema-validator · GitHub

JUnit 動的テストを使用して仕様ファイルからテストを生成 by fdutton · Pull Request #691 · networknt/json-schema-validator · GitHub によって修正されました 

JSON スキーマ テスト スイートには、テスト ケースごとに複数のテストがあり、各仕様ファイルには 1 つ以上のテスト ケースがあります。現在、このプロジェクトは各仕様ファイルを単一の単体テストとして扱います。その結果、単一のテストが失敗すると単体テストが失敗し、それ以降のテストは実行されません。たとえば、仕様ファイル内の最初のテストが失敗した場合、他のテストは実行されません。

現在、単一のテストが失敗したという理由だけで、いくつかの仕様ファイルが無効になっています。たとえば、content.json には 4 つのテスト ケースがあり、合計 18 のテストがあります。単体テストが無効になっているため、どのテストも実行されません。

JUnit Jupiter の動的テスト機能を使用して単体テストをリファクタリングし、テスト ケース内の各テスト (および仕様ファイル内の各テスト ケース) に個別の単体テストを作成することを提案します。これにより、次のようないくつかの利点が得られます。

  • より多くのテストが実際に実行されるため、テストカバレッジが向上します
  • 各テストがレポート内の単一行項目になるため、レポートが改善されます。
  • 見つかった問題のレポートの改善 (例: 各テストでは、「真であると予想されたが偽であった」よりも詳細な情報をレポートできます)
  • JSON Schema Syntax Validator #285、  V2019-09 がプロパティでフィールドの型を検証しない #313  、  V2020-12 が項目 { "type" } を正しく検証しないなど、いくつかのあいまいなバグの原因を調査するのが容易になります : { "type" } #587
  • どのテストを除外するかについてのよりきめ細かい制御 (つまり、仕様ファイル全体を除外する代わりに、特定のテストケースまたは個々のテストの除外をサポートします)

仕様ファイルも更新する必要がありますが、それは別のチケットに任せるのが最善です。

これは、コマンド ラインから実行した場合にどのように表示されるかを示す例です。

<span style="color:#1f2328"><span style="background-color:#ffffff"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>[INFO] +--JSON Schema Test Suite - 1.063s
[INFO] |  +-- [OK] validation of duration strings (src/test/resources/draft2019-09/optional/format/duration.json) Draft 2019-09 no elements present - 0.001s
[INFO] |  +-- [XX] validation of duration strings (src/test/resources/draft2019-09/optional/format/duration.json) Draft 2019-09 no time elements present - 0s
[INFO] |  +-- [OK] validation of duration strings (src/test/resources/draft2019-09/optional/format/duration.json) Draft 2019-09 no date or time elements present - 0s
</code></span></span></span></span>

これは Eclipse でどのように表示されるかです (IntelliJ にも同様のビューがあります)。
 

画像

画像

おすすめ

転載: blog.csdn.net/fei33423/article/details/131853477