次の方法で共有


Microsoft.Testing.Platform のトラブルシューティング

この記事には、 Microsoft.Testing.Platformのトラブルシューティング ガイダンスが含まれています。

終了コード

Microsoft.Testing.Platform は、既知の終了コードを使用して、テストエラーまたはアプリエラーを伝えます。 終了コードは 0 から始まり、負以外の値になります。

終了コード 詳細情報
0 0終了コードは成功を示します。 実行するように選択されたすべてのテストは完了まで実行され、エラーはありませんでした。
1 1終了コードは、不明なエラーを示し、あらゆるものを処理するように機能します。 追加のエラー情報と詳細を確認するには、出力を確認します。
2 2の終了コードは、少なくとも 1 つのテストエラーが発生したことを示すために使用されます。
3 終了コード 3 は、テスト セッションが中止されたことを示します。 例として、Ctrl+使用してセッションを中止できます。
4 終了コード 4 は、使用されている拡張機能のセットアップが無効であり、テスト セッションを実行できないことを示します。
5 終了コード 5 は、テスト アプリに渡されるコマンド ライン引数が無効であることを示します。
6 終了コード 6 は、テスト セッションが実装されていない機能を使用していることを示します。
7 終了コード 7 は、テスト セッションが正常に完了できず、クラッシュした可能性があることを示します。 これは、テスト コントローラーの拡張ポイントを介して実行されたテスト セッションによって発生した可能性があります。
8 終了コード 8 は、テスト セッションでゼロ テストが実行されたことを示します。
9 終了コード 9 は、実行されたテストの最小実行ポリシーに違反したことを示します。
10 終了コード 10 は、テスト アダプター、Testing.Platform Test Framework、MSTest、NUnit、または xUnit が、テストの自己に関係のないインフラストラクチャの理由でテストを実行できなかったことを示します。 たとえば、テストで必要なフィクスチャを作成できないことがあります。
11 終了コード 11 は、依存プロセスが終了した場合にテスト プロセスが終了することを示します。
12 終了コード 12 は、クライアントがサポートされているプロトコル バージョンをサポートしていないため、テスト セッションを実行できなかったことを示します。
13 終了コード 13 は、コマンド ライン オプションを使用して、指定された失敗したテストの最大数に達したため、テスト セッション --maximum-failed-tests 停止したことを示します。 詳細については、Microsoft.Testing.Platform CLI オプション リファレンスの「オプション」セクションを参照してください

詳細ログを有効にし、問題のトラブルシューティングを行うには、 診断ログを参照してください。

特定の終了コードを無視する

Microsoft.Testing.Platform は、既定では厳密に設計されていますが、構成が可能です。 そのため、無視する終了コードをユーザーが決定できます (元の終了コードではなく、 0 の終了コードが返されます)。

特定の終了コードを無視するには、 --ignore-exit-code コマンド ライン オプションまたは TESTINGPLATFORM_EXITCODE_IGNORE 環境変数を使用します。 有効な形式は、無視する終了コードのセミコロン区切りのリストです (例: --ignore-exit-code 2;3;8)。 一般的なシナリオは、テストの失敗が 0 以外の終了コード (終了コードの 2の無視に対応する) になってはいけないことを考慮することです。

診断ログ

このプラットフォームには、テスト実行のトラブルシューティングに役立つ組み込みの診断ログが用意されています。 コマンド ライン オプションまたは環境変数を使用して診断ログを有効にすることができます。

コマンド ライン オプション

次の プラットフォーム オプション は、テスト アプリのトラブルシューティングに役立つ情報を提供します。

  • --info
  • --diagnostic
  • --diagnostic-synchronous-write
  • --diagnostic-verbosity
  • --diagnostic-file-prefix
  • --diagnostic-output-directory

環境変数

環境変数を使用して診断ログを有効にすることもできます。

環境変数の名前 [説明]
TESTINGPLATFORM_DIAGNOSTIC 1に設定すると、診断ログが有効になります。
TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY 詳細レベルを定義します。 使用できる値は TraceDebugInformationWarningErrorCritical です。
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY 指定しない場合、診断ログの出力ディレクトリとして、ファイルはデフォルトの TestResults ディレクトリに生成されます。
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX ログ ファイル名のプレフィックス。 既定値は "log_" です。
TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE 組み込みのファイル ロガーにログの同期的な書き込みを強制します。 (プロセスがクラッシュした場合に) ログ エントリを少しも失いたくないときのシナリオに役立ちます。 これにより、テストの実行速度は低下します。

環境変数は、コマンド ライン引数よりも優先されます。

構成エラーを解決する

Microsoft.Testing.Platform.MSBuild

Microsoft.Testing.Platform.MSBuild に関連する一般的な構成エラーを次に示します。

エラー CS8892: 同期エントリ ポイント 'Program.Main(string[])' が見つかったため、メソッド 'TestingPlatformEntryPoint.Main(string[])' はエントリ ポイントとして使用されません

テスト プロジェクトでエントリ ポイント (Main) を手動で定義するか、既にエントリ ポイントがあるアプリケーションからテスト プロジェクトを参照すると、 Microsoft.Testing.Platformによって生成されたエントリ ポイントと競合します。 この問題を回避するには、次のいずれかの手順を実行します。

  • 手動で定義されたエントリ ポイント (通常は Program.cs のメソッドMain) を削除し、テスト プラットフォームで生成できるようにします。

  • <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint> MSBuild プロパティを設定して、エントリ ポイントの生成を無効にします。

  • テスト プロジェクトを参照するプロジェクトでMicrosoft.Testing.Platform.MSBuild MSBuild プロパティを設定して、推移的な依存関係を<IsTestingPlatformApplication>false</IsTestingPlatformApplication>に完全に無効にします。 これは、テスト アプリケーションを参照するコンソール アプリなど、テスト以外のプロジェクトからテスト プロジェクトを参照する場合に必要です。

Microsoft.Testing.Extensions.Fakes

テスト用に "COR_PROFILER_PATH および COR_PROFILER 環境変数からプロファイラー パスを解決できませんでした" というエラーを偽装します

このエラーは、すべての Fakes アセンブリが bin フォルダーに存在しない場合に発生する可能性があります。

  • プロジェクトで MSTest.SDK を使用するか、 Microsoft.Testing.Extensions.Fakes を参照していることを確認します。
  • .NET Framework プロジェクトの場合は、nuGet ですべてのファイルが bin フォルダーにコピーされないため、 <PlatformTarget>AnyCPU</PlatformTarget> を設定しないでください。