Test yapılandırmanız

TestDetta test koşularınızı daraltır. Hiçbir zaman genişletmez ya da değiştirmez: yapılandırmanızın dışladığı bir test dışlı kalır, kapsam haritaları da sizin ayarlarınızla kaydedilir.

TestDetta bir koşuya ne ekler

TestDetta neyi korur

Kendi haline bırakılırsa dotnet test bunların bazılarının sizin yapılandırmanızın yerine geçmesine izin verir. TestDetta ise ikisini birleştirir:

Sizin yapılandırmanızTek başına dotnet test ne yaparTestDetta ne yapar
Proje dosyasında VSTestTestCaseFilter, örneğin Category!=IntegrationKomut satırındaki bir --filter onun yerine geçer: dışlanan testler koşar(sizin filtreniz)&(kendi sınıf filtresi) koşturur
Kendi dotnet test argümanlarınızdaki --filterYalnızca tek bir --filter alır(sizin filtreniz)&(kendi sınıf filtresi) koşturur
Bir run settings dosyası (RunSettingsFilePath, VSTestSetting ya da sizin --settings'iniz): içindeki TestCaseFilter, EnvironmentVariables, TestRunParameters, veri toplayıcılar, zaman aşımlarıBaşka bir --settings dosyanın tamamının yerine geçerDosyanızın bir kopyasıyla kaydeder, yalnızca kendi öğelerini ekler; filtreniz, değişkenleriniz ve parametreleriniz kalır
TestingPlatformCommandLineArguments (Microsoft.Testing.Platform), örneğin --filter-not-trait category=failingHer koşuya uygularPlatforma bırakır ve sizin zaten bir kez verdiğiniz bir seçeneği tekrar etmez

Seçilen bir proje tamamen koşuyorsa TestDetta filtre eklemez; yapılandırmanız tam olarak kendi koşularınızdaki gibi uygulanır.

CI argümanlarınızı TestDetta'ya verin

Kendi test işinizin kullandığı dotnet test argümanlarının aynısını, hem testler koşarken hem haritalar kaydedilirken verin:

td test --base origin/main -- --filter "Category!=Integration" --settings ci.runsettings
td record -- --filter "Category!=Integration" --settings ci.runsettings

GitHub Actions'ta bunu dotnet-test-args girdisi record modu da dahil her modda yapar. Kaydın kendisinin denetlediği seçenekler (-c, -f, --no-build, logger'lar, sonuç klasörü ve rapor seçenekleri) kayıt sırasında TestDetta'nın değerleriyle kalır; geri kalan her şey verdiğiniz gibi koşar.

td test argümanları arasındaki bir -f <tfm> seçimi de daraltır: koşu yalnızca o framework'ün derlemelerini yükler, bu yüzden yalnızca başka framework'ler için derlenen bir değişiklik (o framework'ün dışarıda bıraktığı bir #if altındaki kod) o koşuda hiçbir şey seçmez. Test projeleriniz birden fazla framework'ü hedefliyorsa her framework'ü bir yerde koşturun, örneğin gecelik tam bir koşuda; bkz. Sınırlamalar.

Bir filtre birleştirilemediğinde

Bazı filtreler bir sınıf filtresiyle birleştirilemez: sizin bir xUnit v3 sorgu filtreniz (--filter-query) ya da sınıf filtreniz ve bir TUnit tree-node filtresi. TestDetta o zaman test projesinin tamamını sizin filtrenizle koşturur: daha fazlasını koşturur, filtrenizin dışarıda bıraktığını asla. Job summary bunu o proje için belirtir.

Nelerin korunduğunu kontrol edin

Testler koşmadan önce konsol, kendi yapılandırması korunan her test projesini adıyla yazar; örneğin tests/Shop.Tests/Shop.Tests.csproj: your test case filter Category!=Integration, run settings tests/ci.runsettings kept in every run. Job summary de aynısını listeler, -v ise her koşunun tam dotnet test komutunu yazar.

Derlemeniz ya da CI'nız test argümanlarını burada sayılmayan bir yolla veriyorsa (bir Arcade özelliği, dotnet test'in etrafında bir betik), bunları dotnet-test-args ile ya da -- sonrasında verin; böylece TestDetta koşularınızın gerçekte ne yaptığını görür.