テストのベストプラクティス - Amazon CodeCatalyst

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

テストのベストプラクティス

が提供するテスト機能を使用する場合は CodeCatalyst、以下のベストプラクティスに従うことをお勧めします。

自動検出

でアクションを設定する場合 CodeCatalyst、自動検出を使用すると、JUnitテストレポートなどのさまざまなツールの出力を自動的に検出し、関連する CodeCatalystレポートを生成できます。自動検出は、検出された出力の名前やパスが変更されても、レポートが引き続き生成されるようにするのに役立ちます。新しいファイルが追加されると、 CodeCatalyst は自動的にそれらを検出し、関連するレポートを生成します。ただし、自動検出を使用する場合は、この機能の以下の側面の一部を考慮することが重要です。

  • アクションで自動検出を有効にすると、同じタイプのすべての自動検出レポートが同じ成功基準を共有します。例えば、最小合格率などの共有基準は、自動検出されたすべてのテストレポートに適用されます。同じタイプのレポートに異なる基準が必要な場合は、これらの各レポートを明示的に設定する必要があります。

  • 自動検出では、依存関係によって生成されたレポートも検索でき、成功基準が設定されている場合、これらのレポートに対する アクションが失敗する可能性があります。この問題は、除外パス設定を更新することで解決できます。

  • 自動検出では、実行時にアクションがスキャンされるため、毎回同じレポートのリストが生成されるとは限りません。特定のレポートを常に生成する場合は、レポートを明示的に設定する必要があります。例えば、ビルドの一部としてテストの実行を停止した場合、テストフレームワークは出力を生成せず、その結果、テストレポートが生成されず、アクションが成功する可能性があります。アクションの成功をその特定のテストに依存する場合は、そのレポートを明示的に設定する必要があります。

ヒント

新規または既存のプロジェクトを開始するときは、プロジェクトディレクトリ全体に対して自動検出を使用します ( を含む**/*)。これにより、サブディレクトリ内のファイルを含め、プロジェクト内のすべてのファイルでレポート生成が呼び出されます。

詳細については、「アクションでの品質レポートの設定」を参照してください。

成功基準

成功基準を設定することで、レポートに品質しきい値を適用できます。例えば、2 つのコードカバレッジレポートが自動検出された場合、1 つは 80% のラインカバレッジで、もう 1 つは 60% のラインカバレッジです。次のオプションがあります。

  • ラインカバレッジの自動検出成功基準を 80% に設定します。これにより、最初のレポートが合格し、2 番目のレポートが失敗し、アクション全体が失敗します。ワークフローのブロックを解除するには、2 番目のレポートのラインカバレッジが 80% を超えるまで、プロジェクトに新しいテストを追加します。

  • ラインカバレッジの自動検出成功基準を 60% に設定します。これにより、両方のレポートが成功し、アクションが成功します。その後、2 番目のレポートでコードカバレッジの拡大に取り組むことができます。ただし、この方法では、最初のレポートのカバレッジが 80% を下回っていないことを保証することはできません。

  • ビジュアルエディタを使用するか、レポートごとに明示的なYAMLセクションとパスを追加して、レポートの一方または両方を明示的に設定します。これにより、レポートごとに個別の成功基準とカスタム名を設定できます。ただし、この方法では、レポートパスが変更されるとアクションが失敗する可能性があります。

詳細については、「レポートの成功基準の設定」を参照してください。

パスの包含/除外

アクションの結果を確認するときは、 IncludePathsと を設定 CodeCatalyst することで、 によって生成されるレポートのリストを調整できますExcludePaths

  • を使用してIncludePaths、レポートを検索するときに含め CodeCatalyst るファイルとファイルパスを指定します。例えば、 を指定すると"/test/report/*"、 は /test/report/ ディレクトリを検索する アクションで使用されるビルドイメージ全体 CodeCatalyst を検索します。そのディレクトリが見つか CodeCatalyst ると、 はそのディレクトリ内のレポートを検索します。

    注記

    手動で設定されたレポートの場合、 は 1 つのファイルに一致する glob パターンIncludePathsである必要があります。

  • を使用してExcludePaths、レポートの検索時に除外 CodeCatalyst するファイルとファイルパスを指定します。例えば、 を指定した場合"/test/reports/**/*"、 CodeCatalyst は /test/reports/ ディレクトリ内のファイルを検索しません。ディレクトリ内のすべてのファイルを無視するには、glob **/* パターンを使用します。

以下は、可能な glob パターンの例です。

パターン 説明

*.*

ドットを含む現在のディレクトリ内のすべてのオブジェクト名に一致します

*.xml

で終わる現在のディレクトリ内のすべてのオブジェクト名を一致 .xml

*.{xml,txt}

.xml または で終わる現在のディレクトリ内のすべてのオブジェクト名に一致します .txt

**/*.xml

で終わるすべてのディレクトリのオブジェクト名を一致 .xml

testFolder

というオブジェクトをファイルとして扱いtestFolder、一致させます。

testFolder/*

testFolderなどの からサブフォルダの 1 つのレベルのオブジェクトを照合します。 testFolder/file.xml

testFolder/*/*

サブフォルダの 2 つのレベルのオブジェクトを から一致させますtestFoldertestFolder/reportsFolder/file.xml

testFolder/**

testFolder/file.xmltestFolder/otherFolder/file.xml などの testFolder 以下のファイルと同様に、サブフォルダ testFolder と一致する

CodeCatalyst は glob パターンを次のように解釈します。

  • スラッシュ (/) 文字は、ファイルパス内のディレクトリを区切ります。

  • アスタリスク (*) 記号は、フォルダの境界を超えない、0 文字以上の名前の要素と一致します。

  • 二重アスタリスク (**) は、すべてのディレクトリをまたいで、0 文字以上の名前の要素と一致します。

注記

ExcludePaths は よりも優先されますIncludePathsIncludePaths と の両方に同じフォルダExcludePathsが含まれている場合、そのフォルダはレポート用にスキャンされません。