Sorun giderme

Her başlık gördüğünüz durumdan yola çıkar. Hepsi için -v, her kararı gerekçesiyle birlikte stderr'e yazar; bu log çoğu soruyu yanıtlar ve bize göndermeniz gereken de odur.

td affected --base origin/main -v

Test projesinin tamamı çalıştı

Çıktıda projeyi bulun: gerekçe yanında yazılıdır. Olağan nedenler derlemenin geneline etki eden bir dosya, projedeki C# dışı bir dosya, bir global using ya da reflection ile bulunan bir tiptir. Neler her şeyi çalıştırır sayfası hepsini listeler. -v logunda affects whole project: True gibi bir satır dosyanın adını verir.

Hiçbir kapsam haritası kullanılmadı

Harita olmadan seçim isimleri izler ve bu daha geniştir. Log, neden harita olmadığını söyler:

Base commit bulunamıyor

TestDetta branch'inizi merge base ile karşılaştırır; bu yüzden ikisinin de geçmişine ihtiyaç duyar. Action şu mesajla durur:

TestDetta compares with a base commit and needs the full history. Use actions/checkout with fetch-depth: 0.

Checkout'u fetch-depth: 0 ile yapın. Diğer CI sistemlerinde shallow clone'ları kapatın ve hedef branch'i açık bir refspec ile fetch edin; her sistem için nasıl yapılacağı Diğer CI sistemleri sayfasında gösterilmiştir.

Beklenenden az test atlandı

Filtre hiçbir testle eşleşmedi

Bir projenin filtresi hiçbir test seçmediğinde TestDetta projeyi filtresiz olarak yeniden çalıştırır ve The filter for … matched no test; running it unfiltered loglar. Hiçbir şey kaçırılmaz, ancak bu bizim tarafımızdaki bir hatadır: lütfen -v logunu gönderin.

Squash merge'ler, rebase'ler ve force push'lar

Haritalar varsayılan branch'teki commit'ler için kaydedilir ve bir pull request, merge base'indeki ya da ondan önceki en yeni haritayı bulur. Bir squash merge ya da rebase, varsayılan branch'te yeni commit'ler oluşturur; bir sonraki push onlar için bir harita kaydeder, o zamana kadar pull request'ler önceki haritayı drift bridge üzerinden kullanır. Bir pull request branch'ine yapılan force push hiçbir şeyi değiştirmez: merge base yeniden hesaplanır.

Fork'lardan gelen pull request'ler

CI sistemleri fork'lardan gelen pull request'lere secret iletmez. Açık depolar lisansa ihtiyaç duymadığından onlar için hiçbir şey değişmez. Özel bir depoda lisanssız bir koşu, tıpkı TestDetta olmadan olacağı gibi tüm testleri çalıştırır.

Sorular

Seçimli bir koşunun code coverage'ı eksiksiz mi?

Hayır. Testleri atlayan bir koşu kısmi coverage üretir. Coverage'ı varsayılan branch'teki tam koşulardan yayımlayın; kayıt orada tüm testleri çalıştırır.

Testler yeniden denenebilir mi?

Evet, framework'ünüzün kendi yeniden deneme seçeneğiyle: -- sonrasındaki her şey dotnet test'e değiştirilmeden iletilir.

Seçilen testler paralel job'lara bölünebilir mi?

td affected --format commands, her test projesi için filtresiyle birlikte bir dotnet test komutu yazdırır. Satırları job'larınıza dağıtın.