Neler her şeyi çalıştırır
Değişikliklerin çoğu birkaç test sınıfı seçer. Bazıları güvenli bir şekilde daraltılamaz; bu yüzden TestDetta bir test projesinin tamamını ya da bir klasörün altındaki her projeyi çalıştırır. Bu sayfa hepsini listeler; böylece geniş bir seçim asla sürpriz olmaz.
Derlemenin geneline etki eden dosyalar
Bu dosyalar altlarındaki her projenin nasıl derlendiğini değiştirir. Bunlardan birindeki değişiklik, bulunduğu klasördeki ve altındaki her test projesini çalıştırır:
| Dosya | Çalıştırdığı |
|---|---|
Directory.Build.props, Directory.Build.targets, Directory.Build.rsp | Altındaki her test projesi |
Directory.Solution.props, Directory.Solution.targets | Altındaki her test projesi |
global.json, NuGet.config, .editorconfig | Altındaki her test projesi |
Directory.Packages.props, yalnızca PackageVersion öğeleri değiştiyse | Yalnızca değişen bir paketi referans alan test projeleri ve onlara bağımlı olanlar |
Directory.Packages.props, başka herhangi bir şey (bir GlobalPackageReference, transitive pinning, property'ler) | Altındaki her test projesi |
Bir test projesinin tamamını çalıştıran değişiklikler
| Değişiklik | Neden daraltılamaz |
|---|---|
Proje dosyası ya da onun import ettiği bir .props veya .targets dosyası | Projedeki herhangi bir şeyin nasıl derlendiğini değiştirebilir. |
Projedeki C# olmayan herhangi bir dosya, örneğin appsettings.json, bir .resx ya da bir test verisi dosyası | Hiçbir kapsam haritası onu kimin okuduğunu söylemez. |
Bir global using ya da bir assembly attribute'u | Her dosyaya uygulanır. |
| Hiçbir bildirimin kapsamadığı koddaki bir C# değişikliği, örneğin bir önişlemci koşulunun altında | İzlenecek bir üye yoktur. |
| Hiçbir yerde adı geçmeyen, ancak bir framework'ün reflection ile keşfedebileceği değişmiş bir tip (controller'lar, mesaj handler'ları, EF yapılandırmaları) | İsimler ve kapsam verisi onu kimin bulduğunu söyleyemez. |
| Bir F# ya da Visual Basic projesindeki değişiklik | Bunların kodu analiz edilmez. |
| Analyzer ya da source generator olarak kullanılan bir proje | Etkisi çağrılar üzerinde değil, derleme üzerindedir. |
Bunların her biri, etkilenen projeye bağımlı her test projesini de çalıştırır.
Kapsam haritası durumları
- Daha eski bir harita ve aradaki derleme değişiklikleri. Harita merge base'inizden birkaç commit daha eskiyse ve aradaki süreçte bir derleme ya da yapılandırma dosyası değiştiyse, etkilenen test projeleri tamamen çalışır.
--drift-fallback nameise bunlar için isimlere göre karar verir. Bkz. drift bridge. - Her sınıf seçildi. Tüm sınıfları seçilen bir proje filtresiz çalışır.
- Hiçbir şeyle eşleşmeyen bir filtre. Proje filtresiz olarak yeniden çalışır ve TestDetta bunu kendi hatası olarak ele alır.
Hiç harita olmaması her şeyi çalıştırmaz: seçim isimle izlemeye geri döner; bu, kapsam verisinden daha geniştir ama yine de dardır.
Yok sayılan dosyalar
Hiçbir proje klasörünün içinde olmayan değişmiş bir dosya, örneğin README.md, .github/ altındaki dosyalar ya da depo kökündeki bir script, hiçbir projeye ait değildir ve hiçbir şey seçmez. Çıktıda eşlenmemiş (unmapped) olarak listelenir.
Testleriniz hiçbir proje klasörünün içinde olmayan bir dosyayı okuyorsa, o dosyadaki bir değişiklik onları seçmez. Bu tür dosyaları test projesinin içinde tutun ya da <None Include="..\..\testdata\**" CopyToOutputDirectory="PreserveNewest" /> gibi projenin öğeleri olarak listeleyin. Böylece dosya nerede olursa olsun projeye ait olur; değiştirilmesi ya da silinmesi projeyi çalıştırır.
Bir istisna: hiçbir projenin sahiplenmediği bir kaynak ya da derleme dosyası (.cs, .fs, .vb, .props, .targets, .projitems), import'ları tam olarak çözümlenemeyen her projenin derleme girdisi sayılır; dolayısıyla o projeler çalışır.