すべてが実行される変更

ほとんどの変更では、選択されるテストクラスはわずかです。しかし安全に絞り込めない変更もあり、その場合 TestDetta はテストプロジェクト全体、またはフォルダー配下のすべてのプロジェクトを実行します。このページではそうした変更をすべて挙げているので、選択が広くなっても驚くことはありません。

ビルド全体に関わるファイル

これらのファイルは、その配下にあるすべてのプロジェクトのビルド方法を変えます。いずれかを変更すると、そのフォルダーとその配下にあるすべてのテストプロジェクトが実行されます。

ファイル実行されるもの
Directory.Build.props、Directory.Build.targets、Directory.Build.rsp配下のすべてのテストプロジェクト
Directory.Solution.props、Directory.Solution.targets配下のすべてのテストプロジェクト
global.json、NuGet.config、.editorconfig配下のすべてのテストプロジェクト
Directory.Packages.props(PackageVersion 項目だけが変更された場合)変更されたパッケージを参照するテストプロジェクトと、それに依存するテストプロジェクトだけ
Directory.Packages.props(それ以外の変更:GlobalPackageReference、推移的なピン留め、プロパティ)配下のすべてのテストプロジェクト

テストプロジェクト全体が実行される変更

変更絞り込めない理由
プロジェクトファイル、またはそれがインポートする .props や .targets ファイルプロジェクト内のあらゆるもののビルド方法を変えうるため。
プロジェクト内の C# 以外のファイル(appsettings.json、.resx、テストデータファイルなど)誰がそれを読み込むかを示すカバレッジマップがないため。
global using またはアセンブリ属性すべてのファイルに適用されるため。
どの宣言にも属さないコードでの C# の変更(プリプロセッサ条件の下にあるコードなど)たどるべきメンバーがないため。
どこからも名前で参照されていないものの、フレームワークがリフレクションで検出しうる型の変更(コントローラー、メッセージハンドラー、EF の構成など)名前からもカバレッジからも、誰がそれを見つけるかわからないため。
F# または Visual Basic のプロジェクトでの変更そのコードは分析されないため。
アナライザーやソースジェネレーターとして使われるプロジェクト影響が呼び出しではなくコンパイルに及ぶため。

これらはいずれも、影響を受けたプロジェクトに依存するすべてのテストプロジェクトも実行します。

カバレッジマップの状況

マップがまったくない場合でも、すべてが実行されるわけではありません。選択は名前によるトレースにフォールバックします。カバレッジよりは広くなりますが、それでも絞り込まれた選択です。

無視されるファイル

README.md、.github/ 配下のファイル、リポジトリのルートにあるスクリプトなど、すべてのプロジェクトフォルダーの外にある変更ファイルは、どのプロジェクトにも属さないため、何も選択しません。出力には、どこにも対応付けられなかったファイル(unmapped)として表示されます。

どのプロジェクトフォルダーにも属さないファイルをテストが読み込んでいる場合、そのファイルを変更してもテストは選択されません。こうしたファイルはテストプロジェクト内に置くか、<None Include="..\..\testdata\**" CopyToOutputDirectory="PreserveNewest" /> のようにプロジェクトの項目として指定してください。そうすれば、ファイルがどこにあってもそのプロジェクトに属し、変更や削除でプロジェクトが実行されます。

例外が 1 つあります。どのプロジェクトにも属さないソースファイルやビルドファイル(.cs、.fs、.vb、.props、.targets、.projitems)は、インポートを完全には解決できなかったすべてのプロジェクトのビルド入力とみなされ、それらのプロジェクトが実行されます。