Visual Studio でのテストの実行には、 テスト プラットフォーム を使用してテストを実行する前に、ディスク上のバイナリを更新するプロジェクトのビルドが含まれます。 Visual Studio 内のビルド時間は、コードに加えられた 変更の種類 によって異なる場合があります。 大規模なソリューションの場合、ビルドはテスト実行の最もコストの高い部分になる可能性があります。 Visual Studio 2022 以降では、ホット リロードによるテスト実行を有効にして、サポートされているシナリオのビルドをスキップすることでテストの実行を高速化できます。
サポートされる内容
- .NET 6.0 以降を対象とする C# および VB プロジェクト
- DEBUG 構成用にビルドされたテスト プロジェクト
- Visual Studio 2022 以降
ホット リロードでテスト実行を有効にする
Test>Options>「(実験的) .NET 6 以上を対象とする C# および VB テストプロジェクトのホットリロード テスト実行を有効にする」 を選択して、この機能を有効にします。
なぜ実験的なのですか?
これは、コードの検証の広く使用されているパスを変更する新しいテスト実行方法です。 また、ユーザーからより多くのフィードバックを受け取ると、この機能に関するユーザー エクスペリエンスも変わると予想されます。 この 2 つの理由から、現在、この機能には "試験段階" というラベルが付けられます。
動作方法
このオプションを有効にすると、テスト エクスプローラーは、可能な場合はホット リロードでテスト実行を自動的に使用します。 ホット リロードが不可能な場合は、テストのビルドと実行の通常の動作にフォールバックします。 テストを実行しているユーザーは、ワークフローに変更を加える必要はありません (つまり、コードの編集とテストの実行を続行します)。
内部では、新しくリリースされたホット リロード エクスペリエンスに存在する同じ エディット コンティニュ インフラストラクチャを使用して、 実行時に C#/VB コードを編集 し、加えられた変更を特定しています。 このため、"失礼な編集" がない場合にのみホット リロードを行います。その場合は、テストを実行する前にビルドにフォールバックします。 サポートされている編集の詳細については、Edit and Continue ドキュメントを参照してください。
テストの実行速度はどのくらいですか?
この機能によってどれだけの時間が節約されるかを見積もるときに、多くの変数が発生します。 例えば次が挙げられます。
- プロジェクトのビルドにかかる時間。
- どのような編集が行われたか。
- 編集が行われたファイルの大きさ。
- 編集が行われた場所(リーフプロジェクトであるかどうか)。
最終的に、速度の向上は、その特定のテスト実行で発生したビルド時間に直接関連します。
注記
- オプションを有効にするか、Visual Studio を開いた後の最初のテスト実行では、プロジェクトビルドが発生します。
- テストの実行時にエディター内のファイルが保存されない場合があります。 これらを解決し、チェックインする前に、完全なビルド (Ctrl + Shift + B) を実行していることを確認します。
- ホット リロードされたテストの実行が発生しても、ディスク上のバイナリは更新されません。
- ホット リロードされたテストの実行は、テスト エクスプローラーの "Test>Run All Tests"、"Run All Tests in View" では機能しません。また、ソリューション エクスプローラーのソリューション ノードからすべてのテストを実行しても機能しません。 この機能は、現在ソリューション全体のビルドを保証しているため、これらのコマンドでは機能しません。
- サポートされていないターゲット フレームワーク (.NET 6.0 未満) を使用してテストを実行すると、プロジェクトビルドが発生します。
- ディスク上の内容とテスト エクスプローラーに表示される内容の間に不整合がある場合は、 Ctrl + Shift + B キー を押してソリューション/プロジェクトビルドを検討し、テストを実行してください。 明示的なビルドでは、ホット リロード テストの結果が通常の完全ビルド テスト結果に置き換えられます。
既知の問題
- ホット リロードを使用したテスト実行は、次のシナリオでは発生しません。
- コード カバレッジ
- ライブユニットテスト
- プロファイリング
- デバッグ
- 読み取り不可能なトークンが存在する場合、スタック トレースを読み取れない場合があります。 この問題は ここで 追跡中であり、.NET 7.0 での修正が予定されています
- この場合の推奨される回避策は、プロジェクトをビルドし、テストを再実行することです。
フィードバックが重要
前述のように、この試験的な機能を完了するには、フィードバックが必要です。 エクスペリエンスの方法に関する提案がある場合、または問題が発生した場合は、少し時間を取って問題を報告してください。 フィードバックによってのみ、重大な問題が解決され、入力に基づいて将来の決定が優先されます。
Microsoft に連絡するには、 Visual Studio フィードバック メカニズムを使用してください。