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 |
json | Her proje ve test sınıfı; kararı, kanıtı ve süre tahminiyle | Script'ler, dashboard'lar |
paths | Her satırda etkilenen bir test .csproj dosyası | Başka bir araca girdi vermek |
commands | Her test projesi için filtresiyle birlikte bir dotnet test komutu | Testleri 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şken | Ne yapar |
|---|---|
TESTDETTA_LICENSE | Bir CI secret'ından gelen lisans dizesi. |
TESTDETTA_LICENSE_FILE | Lisans dizesini içeren bir dosya. |
TESTDETTA_LICENSE_REFRESH=off | Lisans servisine erişemeyen ağlar için günlük lisans yenilemesini kapatır. |
TESTDETTA_LICENSE_SCOPE | origin remote'u depoyu adlandırmadığında (örneğin yerel bir mirror) lisansın kapsaması gereken depo. |
HTTPS_PROXY | Lisans yenilemesi için proxy. |
Çıkış kodları
| Kod | Anlamı |
|---|---|
0 | Başarılı; "test gerekmiyor" durumu dahil. |
1 | Analiz başarısız oldu: git, dosya sistemi ya da bir proje dosyası. |
2 | Geçersiz komut satırı. |
3 | Testler başarısız oldu (test ve record). |