CLI referansı

Her komut, seçenek ve ortam değişkeni; ne yaptığı, varsayılanı ve bir örnekle. Kısa sürüm için td --help çalıştırın.

td affected [options]              Print the projects and tests a change affects
td test [options] [-- <args>]      Run only the tests a change affects
td record [options]                Run all tests with coverage and store the map
td license status [options]        Check the license and show what it covers
td license install <license|file>  Store a license in ~/.testdetta/license

Tüm analizler için seçenekler

Bunlar affected, test ve record ile çalışır.

--base <ref>

Karşılaştırılacak git ref'i. TestDetta çalışma ağacınızı HEAD ile bu ref'in merge base'iyle karşılaştırır; böylece siz branch'i ayırdıktan sonra base branch'e gelen commit'ler sizin değişiklikleriniz sayılmaz. Varsayılan: origin/main.

td test --base origin/develop
td affected --base HEAD~3      # the last three commits and anything uncommitted

--repo <path>

Analiz edilecek, depo içindeki herhangi bir yol. Varsayılan: geçerli dizin.

td affected --repo ../shop

-v, --verbose ve --log-level <level>

Loglar stderr'e gider, böylece stdout makine tarafından okunabilir kalır. -v her kararı açıklayan debug loglarını açar: bir projenin neden etkilendiğini, bir test sınıfının hangi üyeyi çalıştırdığını, bir izlemenin hangi ismi takip ettiğini. --log-level şunlardan birini seçer: trace, debug, information, warning (varsayılan), error ya da none; trace ham git çıktısını da ekler.

td affected -v 2> testdetta-debug.log
td test --log-level information

--max-map-age <n>

Merge base'in kendisinde harita yoksa, merge base'den en fazla n first-parent commit önce kaydedilmiş bir kapsam haritası kullanır. Aradaki değişiklikler köprülenir: haritadan bu yana değişmiş ve sizin değişikliğinize ulaşabilen herhangi bir üyeyi çalıştırmış sınıflar da seçilir. 0 yalnızca merge base'de kaydedilmiş bir haritayı kullanır. Varsayılan: 50. Bkz. Nasıl karar verir.

td test --max-map-age 20

--drift-fallback <all|name>

Daha eski bir haritadan bu yana yapılan değişiklikler üyelerle ifade edilemeyen bir şey içerdiğinde (bir derleme dosyası, yapılandırma, bir global using) ne yapılacağı. all (varsayılan) etkilenen test projelerini tamamen çalıştırır; name isimlere göre karar verir; bu daha hızlıdır ama yapılandırma ya da reflection ile bağlanan çağrıları göremez.

td test --drift-fallback name

--maps-dir <dir>

Kapsam haritalarını depo dışında, commit başına bir klasör olarak tutar. record haritaları <dir>/<commit>/ altına kaydeder; affected ve test ise --max-map-age sınırı içindeki en yenisini geri yükler. GitHub Actions dışındaki CI sistemlerinde, paylaşılan bir disk ya da senkronize edilen nesne depolamayla kullanın. Varsayılan: haritalar depoda .testdetta/coverage içinde durur.

td record --maps-dir /srv/testdetta-maps/shop
td test --base origin/main --maps-dir /srv/testdetta-maps/shop

td affected

Hiçbir şey derlemeden ya da çalıştırmadan, bir değişikliğin neleri etkilediğini ve nedenini yazdırır.

--format <text|json|paths|commands>

BiçimÇıktıKullanım amacı
text (varsayılan)Gerekçeleriyle etkilenen projeler, ardından test planıOkumak
jsonHer proje ve test sınıfı; kararı, kanıtı ve süre tahminiyleScript'ler, dashboard'lar
pathsHer satırda etkilenen bir test .csproj dosyasıBaşka bir araca girdi vermek
commandsHer test projesi için filtresiyle birlikte bir dotnet test komutuTestleri kendi yönteminizle çalıştırmak
td affected --format json > plan.json
td affected --format paths | xargs -n1 dotnet build

--tests-only

Aradaki üretim projelerini değil, yalnızca etkilenen test projelerini listeler.

td test

Yalnızca etkilenen testleri derler ve çalıştırır: yalnızca bazı sınıflar etkilendiğinde test projesi başına bir filtreyle, hepsi etkilendiğinde ya da bir değişiklik daraltılamadığında projenin tamamını, hiçbiri etkilenmediğinde hiçbir şey. Herhangi bir test başarısız olduğunda çıkış kodu 3'tür.

--dry-run

dotnet test komutlarını çalıştırmak yerine yazdırır. global.json dosyası bir alt klasörde bulunan bir proje (cd src && dotnet test ...) şeklinde yazdırılır.

--summary-file <path>

Bir Markdown özeti ekler: her projenin sonucu, hangi sınıfların çalıştığı ve nedeni, hangilerinin atlandığı ve kazanılan kayıtlı test süresi. GitHub Actions'ta bunu $GITHUB_STEP_SUMMARY'ye yönlendirin; action bunu sizin için yapar. Bir örneğe bakın.

td test --summary-file "$GITHUB_STEP_SUMMARY"

-- <dotnet test arguments>

-- sonrasındaki her şey her dotnet test çağrısına iletilir.

td test -- -c Release --logger trx
td test -- --no-restore

td record

Tüm testleri kapsam ölçümüyle çalıştırır ve her test projesi için .testdetta/coverage (ya da --maps-dir) altına bir harita yazar. Bunu varsayılan branch'inizde çalıştırın; bu aynı zamanda o branch'in tam test koşusudur. Testler başarısız olduğunda çıkış kodu 3'tür; haritalar yine de yazılır ve başarısız sınıflar daha sonra her zaman seçilir.

-c, --configuration <name>

Derleme yapılandırması. Varsayılan: Debug.

-f, --framework <tfm>

Birden fazla framework hedefleyen bir test projesinde kaydedilecek hedef framework. Varsayılan: projenin ilk hedef framework'ü.

td record -f net10.0

--project <path>

Yalnızca bu test projesini kaydeder; yol depo köküne görelidir. Birden fazla proje için tekrarlayın. CI'da çalışamayan projeleri, örneğin veritabanı gerektiren entegrasyon testlerini, dışarıda bırakın; bunlar için isimlere göre karar verilir.

td record --project tests/Shop.Tests/Shop.Tests.csproj --project tests/Api.Tests/Api.Tests.csproj

--parallel <n>

Daha hızlı kayıt için her projenin test sınıflarını n test sürecine dağıtır. Her süreç testlerini yine birer birer çalıştırır. Test paketinizin aynı anda birden fazla test sürecini kaldırabilmesi gerekir (sabit port ya da paylaşılan dosya olmamalı). Varsayılan: 1.

--no-build

Yeniden derlemek yerine aynı yapılandırmayla yapılmış önceki bir derlemenin çıktısını kaydeder.

dotnet build -c Release
td record -c Release --no-build

td license

td license status, lisansı td test'in yapacağı şekilde kontrol eder ve neyi kapsadığını yazdırır: lisans sahibi, koltuklar, son 30 gündeki aktif committer'lar, bot listesi, kapsamlar, bitiş tarihi. Hiçbir yere kişisel veri göndermez. td license install <license|file>, hiçbir CI secret'ının tutamayacağı makineler için lisansı ~/.testdetta/license dosyasına kaydeder. Bkz. Lisans.

Ortam değişkenleri

DeğişkenNe yapar
TESTDETTA_LICENSEBir CI secret'ından gelen lisans dizesi.
TESTDETTA_LICENSE_FILELisans dizesini içeren bir dosya.
TESTDETTA_LICENSE_REFRESH=offLisans servisine erişemeyen ağlar için günlük lisans yenilemesini kapatır.
TESTDETTA_LICENSE_SCOPEorigin remote'u depoyu adlandırmadığında (örneğin yerel bir mirror) lisansın kapsaması gereken depo.
HTTPS_PROXYLisans yenilemesi için proxy.

Çıkış kodları

KodAnlamı
0Başarılı; "test gerekmiyor" durumu dahil.
1Analiz başarısız oldu: git, dosya sistemi ya da bir proje dosyası.
2Geçersiz komut satırı.
3Testler başarısız oldu (test ve record).