İngilizce dilinde oku

Aracılığıyla paylaş


dotnet test

Bu makale şunlar için geçerlidir: ✔️ .NET Core 3.1 SDK ve sonraki sürümler

Veri Akışı Adı

dotnet test - Birim testlerini yürütmek için kullanılan .NET test sürücüsü.

Özet

dotnet test [<PROJECT> | <SOLUTION> | <DIRECTORY> | <DLL> | <EXE>]
    [--test-adapter-path <ADAPTER_PATH>]
    [-a|--arch <ARCHITECTURE>]
    [--artifacts-path <ARTIFACTS_DIR>]
    [--blame]
    [--blame-crash]
    [--blame-crash-dump-type <DUMP_TYPE>]
    [--blame-crash-collect-always]
    [--blame-hang]
    [--blame-hang-dump-type <DUMP_TYPE>]
    [--blame-hang-timeout <TIMESPAN>]
    [-c|--configuration <CONFIGURATION>]
    [--collect <DATA_COLLECTOR_NAME>]
    [-d|--diag <LOG_FILE>]
    [-f|--framework <FRAMEWORK>]
    [-e|--environment <NAME="VALUE">]
    [--filter <EXPRESSION>]
    [--interactive]
    [-l|--logger <LOGGER>]
    [--no-build]
    [--nologo]
    [--no-restore]
    [-o|--output <OUTPUT_DIRECTORY>]
    [--os <OS>]
    [--results-directory <RESULTS_DIR>]
    [-r|--runtime <RUNTIME_IDENTIFIER>]
    [-s|--settings <SETTINGS_FILE>]
    [-t|--list-tests]
    [-v|--verbosity <LEVEL>]
    [<args>...]
    [[--] <RunSettings arguments>]

dotnet test -h|--help

Açıklama

dotnet test komutu, belirli bir çözümde birim testlerini yürütmek için kullanılır. dotnet test komutu çözümü oluşturur ve kullanarak VSTestçözümdeki her test projesi için bir test ana bilgisayar uygulaması çalıştırır. Test konağı, verilen projedeki testleri bir test çerçevesi kullanarak yürütür, örneğin: MSTest, NUnit veya xUnit ve her testin başarısını veya başarısızlığını bildirir. Tüm testler başarılı olursa, test çalıştırıcısı çıkış kodu olarak 0 döndürür; aksi takdirde herhangi bir test başarısız olursa 1 döndürür.

Not

dotnet test başlangıçta yalnızca VSTesttabanlı test projelerini destekleyecek şekilde tasarlanmıştır. Test çerçevelerinin son sürümleri Microsoft.Testing.Platform için destek ekliyor. Bu alternatif test platformu daha basit ve daha hızlıdır VSTest ve farklı komut satırı seçenekleriyle destekler dotnet test . Daha fazla bilgi için bkz . Microsoft.Testing.Platform.

Çok hedefli projeler için, her hedeflenen çerçeve için testler çalıştırılır. Test konağı ve birim testi çerçevesi NuGet paketleri olarak paketlenir ve proje için normal bağımlılıklar olarak geri yüklenir. .NET 9 SDK'sı ile başlayarak, bu testler varsayılan olarak paralel olarak çalıştırılır. Paralel yürütmeyi TestTfmsInParallel devre dışı bırakmak için MSBuild özelliğini olarak falseayarlayın. Daha fazla bilgi için, bu makalenin devamında testleri paralel çalıştırma ve örnek komut satırı makalesine bakın.

Test projeleri, aşağıdaki örnek proje dosyasında görüldüğü gibi sıradan <PackageReference> bir öğe kullanarak test çalıştırıcısını belirtir:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
    <PackageReference Include="xunit" Version="2.8.1" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.8.1" />
  </ItemGroup>

</Project>

Test ana bilgisayarı nerede Microsoft.NET.Test.Sdk , xunit test çerçevesidir. Ve xunit.runner.visualstudio , xUnit çerçevesinin test konağıyla çalışmasını sağlayan bir test bağdaştırıcısıdır.

Örtük geri yükleme

, , dotnet publishve dotnet packgibi dotnet testdotnet rundotnet builddotnet newgeri yükleme gerektiren tüm komutlar tarafından örtük olarak çalıştırıldığından, komutunu çalıştırmanız dotnet restore gerekmez. Örtük geri yüklemeyi devre dışı bırakmak için seçeneğini kullanın --no-restore .

Komutudotnet restore, Azure DevOps Services'teki sürekli tümleştirme derlemeleri veya geri yüklemenin ne zaman gerçekleştiğini açıkça denetlemesi gereken derleme sistemleri gibi açıkça geri yüklemenin anlamlı olduğu bazı senaryolarda hala yararlıdır.

NuGet akışlarını yönetme hakkında bilgi için belgelere dotnet restore bakın.

İş yükü bildirimi indirmeleri

Bu komutu çalıştırdığınızda, iş yükleri için reklam bildirimlerini zaman uyumsuz bir arka plan indirme işlemi başlatır. Bu komut tamamlandığında indirme işlemi hala çalışıyorsa indirme durdurulur. Daha fazla bilgi için bkz . Reklam bildirimleri.

Bağımsız değişkenler

  • PROJECT | SOLUTION | DIRECTORY | DLL | EXE

    • Test projesinin yolu.
    • Çözümün yolu.
    • Proje veya çözüm içeren bir dizinin yolu.
    • Test projesi .dll dosyasının yolu.
    • Test projesi .exe dosyasının yolu.

    Belirtilmezse, etki geçerli dizini belirtmek için bağımsız değişkenin kullanılmasıyla DIRECTORY aynıdır.

Seçenekler

Uyarı

Seçeneklerde hataya neden olan değişiklikler:

  • .NET 7'den başlayarak: yerine diğer adlara --arch geçin -a--test-adapter-path
  • .NET 7'den başlayarak: yerine diğer adlara --runtime geçin -r--results-directory

Uyarı

kullanırken Microsoft.Testing.Platformdesteklenen seçenekler için dotnet test tümleştirmesine bakın. Başparmak kuralı olarak, testle ilgili olmayan her seçenek desteklenirken, testle ilgili her seçenek olduğu gibi desteklenmez.

  • --test-adapter-path <ADAPTER_PATH>

    Ek test bağdaştırıcıları için aranacak dizinin yolu. Yalnızca son eki .TestAdapter.dll olan .dll dosyaları incelenir. Belirtilmezse, test .dll dizininde arama yapılır.

    7'den önceki .NET SDK sürümlerinde kullanılabilen kısa form -a .

  • --arch <ARCHITECTURE>

    Hedef mimariyi belirtir. Bu, sağlanan değerin varsayılan RID ile birleştirildiği Çalışma Zamanı Tanımlayıcısı'nı (RID) ayarlamak için bir kısaltma söz dizimidir. Örneğin, bir win-x64 makinede, belirterek --arch x86 RID değerini olarak win-x86ayarlar. Bu seçeneği kullanırsanız, seçeneğini kullanmayın -r|--runtime . .NET 6 Preview 7 sürümünden itibaren kullanılabilir.

  • --artifacts-path <ARTIFACTS_DIR>

    Yürütülen komuttaki tüm derleme çıktı dosyaları, projeyle ayrılmış olarak belirtilen yolun altındaki alt klasörlere gider. Daha fazla bilgi için bkz . Yapıt Çıktı Düzeni. .NET 8 SDK'sı ile kullanılabilir.

  • --blame

    Testleri suçlama modunda çalıştırır. Bu seçenek, test konağı kilitlenmesine neden olan sorunlu testleri yalıtmada yararlıdır. Kilitlenme algılandığında, kilitlenmeden önce çalıştırılan testlerin sırasını yakalayan bir dizi dosyası TestResults/<Guid>/<Guid>_Sequence.xml oluşturur.

    Bu seçenek bellek dökümü oluşturmaz ve test kilitlendiğinde yararlı olmaz.

  • --blame-crash (.NET 5.0 SDK'dan itibaren kullanılabilir)

    Testleri suçlama modunda çalıştırır ve test ana bilgisayarı beklenmedik şekilde çıktığında kilitlenme dökümü toplar. Bu seçenek kullanılan .NET sürümüne, hata türüne ve işletim sistemine bağlıdır.

    Yönetilen koddaki özel durumlar için .NET 5.0 ve sonraki sürümlerde döküm otomatik olarak toplanır. .NET 5.0 üzerinde çalıştırılan ve kilitlenen testhost veya herhangi bir alt işlem için döküm oluşturur. Yerel koddaki kilitlenmeler döküm oluşturmaz. Bu seçenek Windows, macOS ve Linux'ta çalışır.

    Yerel kodda veya .NET Core 3.1 veya önceki sürümleri kullanırken kilitlenme dökümleri yalnızca Procdump kullanılarak Windows'ta toplanabilir. procdump.exe ve procdump64.exe içeren bir dizin PATH veya PROCDUMP_PATH ortam değişkeninde olmalıdır. Araçları indirin. öğesini gösterir --blame.

    .NET 5.0 veya üzeri üzerinde çalışan yerel bir uygulamadan kilitlenme dökümü toplamak için, ortam değişkeni 1olarak ayarlanarak VSTEST_DUMP_FORCEPROCDUMP Procdump kullanımı zorlanabilir.

  • --blame-crash-dump-type <DUMP_TYPE> (.NET 5.0 SDK'dan itibaren kullanılabilir)

    Toplanacak kilitlenme bilgi dökümü türü. Desteklenen döküm türleri şunlardır full :(varsayılan) ve mini. öğesini gösterir --blame-crash.

  • --blame-crash-collect-always (.NET 5.0 SDK'dan itibaren kullanılabilir)

    Beklenen bir kilitlenme dökümü ve beklenmeyen test ana bilgisayarı çıkışı toplar.

  • --blame-hang (.NET 5.0 SDK'dan itibaren kullanılabilir)

    Testleri suçlama modunda çalıştırın ve bir test verilen zaman aşımını aştığında bir kilitlenme dökümü toplar.

  • --blame-hang-dump-type <DUMP_TYPE> (.NET 5.0 SDK'dan itibaren kullanılabilir)

    Toplanacak kilitlenme bilgi dökümü türü. , veya noneolmalıdırfullmini. Belirtildiğinde none , test ana bilgisayarı zaman aşımında sonlandırılır, ancak döküm toplanmaz. öğesini gösterir --blame-hang.

  • --blame-hang-timeout <TIMESPAN> (.NET 5.0 SDK'dan itibaren kullanılabilir)

    Test başına zaman aşımı, ardından bir kilitlenme dökümü tetiklenir ve test ana bilgisayar işlemi ve tüm alt işlemleri atılır ve sonlandırılır. Zaman aşımı değeri aşağıdaki biçimlerden birinde belirtilir:

    • 1.5h, 1.5hour, 1.5 saat
    • 90m, 90 dak, 90minute, 90 dak.
    • 5400s, 5400sec, 5400saniye, 5400saniye
    • 5400000ms, 5400000mil, 5400000millisecond, 5400000milliseconds

    Birim kullanılmadığında (örneğin, 5400000), değerin milisaniye cinsinden olduğu varsayılır. Veri temelli testlerle birlikte kullanıldığında, zaman aşımı davranışı kullanılan test bağdaştırıcısına bağlıdır. xUnit, NUnit için. ve MSTest 2.2.4+, zaman aşımı her test çalışması sonrasında yenilenir. 2.2.4 sürümünden önceki MSTest için zaman aşımı tüm test çalışmaları için kullanılır. Bu seçenek Windows ile ve sonraki sürümlerde netcoreapp2.1 , Linux'ta ve sonraki sürümlerde netcoreapp3.1 ve veya sonraki sürümlerde net5.0 macOS'ta desteklenir. ve --blame-hangifade eder--blame.

  • -c|--configuration <CONFIGURATION>

    Derleme yapılandırmasını tanımlar. Çoğu proje için varsayılan değer şeklindedir Debug, ancak projenizdeki derleme yapılandırma ayarlarını geçersiz kılabilirsiniz.

  • --collect <DATA_COLLECTOR_NAME>

    Test çalıştırması için veri toplayıcıyı etkinleştirir. Daha fazla bilgi için bkz . Test çalıştırmasını izleme ve analiz etme.

    Örneğin, seçeneğini kullanarak --collect "Code Coverage" kod kapsamını toplayabilirsiniz. Daha fazla bilgi için bkz . Kod kapsamını kullanma, Kod kapsamı analizini özelleştirme ve GitHub sorunu dotnet/docs#34479.

    Kod kapsamını toplamak için seçeneğini kullanarak Coverlet'i --collect "XPlat Code Coverage" de kullanabilirsiniz.

  • -d|--diag <LOG_FILE>

    Test platformu için tanılama modunu etkinleştirir ve tanılama iletilerini belirtilen dosyaya ve yanındaki dosyalara yazar. İletileri günlüğe kaydeden işlem, test ana bilgisayar günlüğü ve *.datacollector_<date>.txt veri toplayıcı günlüğü gibi *.host_<date>.txt hangi dosyaların oluşturulduğunu belirler.

  • -e|--environment <NAME="VALUE">

    Ortam değişkeninin değerini ayarlar. Yoksa değişkeni oluşturur, varsa geçersiz kılar. Bu seçeneğin kullanılması, testleri yalıtılmış bir işlemde çalıştırılmaya zorlar. Seçeneği birden çok değişken sağlamak için birden çok kez belirtilebilir.

  • -f|--framework <FRAMEWORK>

    Testleri çalıştırmak için hedef çerçevenin hedef çerçeve adı (TFM). Hedef çerçeve de proje dosyasında belirtilmelidir.

  • --filter <EXPRESSION>

    Verilen ifadeyi kullanarak geçerli projedeki testleri filtreler. Yalnızca filtre ifadesiyle eşleşen testler çalıştırılır. Daha fazla bilgi için Filtre seçeneği ayrıntıları bölümüne bakın. Seçmeli birim testi filtrelemeyi kullanma hakkında daha fazla bilgi ve örnek için bkz . Seçmeli birim testleri çalıştırma.

  • -?|-h|--help

    komutunun nasıl kullanılacağına ilişkin bir açıklama yazdırır.

  • --interactive

    Komutun durmasına ve kullanıcı girişini veya eylemini beklemesine izin verir. Örneğin, kimlik doğrulamasını tamamlamak için. .NET Core 3.0 SDK'sı ile kullanılabilir.

  • -l|--logger <LOGGER>

    Test sonuçları için bir günlükçü belirtir ve isteğe bağlı olarak günlükçü için geçiş yapar. Birden çok günlükçü etkinleştirmek için bu parametreyi birden çok kez belirtin. Daha fazla bilgi için bu makalenin devamında test sonuçlarını raporlama, Günlükçüler için anahtarlar ve örneklere bakın.

    Komut satırı anahtarlarını günlükçüye geçirmek için:

    • Anahtarın kısaltılmış biçimini değil tam adını kullanın (örneğin, verbosity yerine v).
    • Öndeki tireleri atla.
    • Her anahtarı noktalı ;virgülle ayıran alanı değiştirin.
    • Anahtarın bir değeri varsa, bu anahtar ile değeri arasındaki iki nokta üst üste ayırıcısını eşittir işaretiyle =değiştirin.

    Örneğin, -v:detailed --consoleLoggerParameters:ErrorsOnly, verbosity=detailed;consoleLoggerParameters=ErrorsOnly olur.

  • --no-build

    Test projesini çalıştırmadan önce derlemez. Ayrıca bayrağı örtük olarak ayarlar --no-restore .

  • --nologo

    Microsoft TestPlatform başlığını görüntülemeden testleri çalıştırın. .NET Core 3.0 SDK'sı ile kullanılabilir.

  • --no-restore

    Komutu çalıştırırken örtük geri yükleme yürütmez.

  • -o|--output <OUTPUT_DIRECTORY>

    Çalıştırılacak ikili dosyaları bulabileceğiniz dizin. Belirtilmezse, varsayılan yol şeklindedir ./bin/<configuration>/<framework>/. Birden çok hedef çerçeveye sahip projeler için (özelliği aracılığıyla TargetFrameworks ) bu seçeneği ne zaman belirttiğinizi de tanımlamanız --framework gerekir. dotnet test her zaman çıkış dizininden testleri çalıştırır. Çıkış dizinindeki test varlıklarını kullanmak için kullanabilirsiniz AppDomain.BaseDirectory .

    • .NET 7.0.200 SDK ve üzeri

      Bu komutu bir çözümde çalıştırırken seçeneğini belirtirseniz --output , CLI çıkış yolunun belirsiz semantiği nedeniyle bir uyarı (7.0.200'de bir hata) yayar. --output Tüm yerleşik projelerin tüm çıkışları, hem çok hedefli projelerle hem de doğrudan ve geçişli bağımlılıkların farklı sürümlerine sahip projelerle uyumlu olmayan belirtilen dizine kopyalandığından bu seçeneğe izin verilmez. Daha fazla bilgi için bkz. Derlemeyle ilgili komutlar için çözüm düzeyi --output seçeneği artık geçerli değil.

  • --results-directory <RESULTS_DIR>

    Test sonuçlarının yerleştirileceği dizin. Belirtilen dizin yoksa oluşturulur. Varsayılan değer, proje dosyasını içeren dizindedir TestResults .

    7'den önceki .NET SDK sürümlerinde kullanılabilen kısa form -r .

  • -r|--runtime <RUNTIME_IDENTIFIER>

    Test etmek için hedef çalışma zamanı.

    .NET SDK 7'den başlayarak kısa form -r kullanılabilir.

  • -s|--settings <SETTINGS_FILE>

    Testleri .runsettings çalıştırmak için kullanılacak dosya. öğesinin TargetPlatform (x86|x64) etkisi dotnet testyoktur. x86'yı hedefleyen testleri çalıştırmak için .NET Core'un x86 sürümünü yükleyin. Yoldaki dotnet.exe bitliği, testleri çalıştırmak için kullanılacaktır. Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:

  • -t|--list-tests

    Testleri çalıştırmak yerine bulunan testleri listeleyin.

  • -v|--verbosity <LEVEL>

    Komutun ayrıntı düzeyini ayarlar. İzin verilen değerler , m[inimal], n[ormal], d[etailed]ve diag[nostic]değerleridirq[uiet]. Varsayılan değer: minimal. Daha fazla bilgi için bkz. LoggerVerbosity.

  • args

    Bağdaştırıcıya geçirecek ek bağımsız değişkenleri belirtir. Birden çok bağımsız değişkeni ayırmak için boşluk kullanın.

    Olası bağımsız değişkenlerin listesi belirtilen davranışa bağlıdır:

    • Bir proje, çözüm veya dizin belirttiğinizde veya bu bağımsız değişkeni atlarsanız, çağrı adresine msbuildiletilir. Bu durumda, kullanılabilir bağımsız değişkenler dotnet msbuild belgelerinde bulunabilir.
    • Bir .dll veya .exe belirttiğinizde, çağrı adresine vstestiletilir. Bu durumda, kullanılabilir bağımsız değişkenler dotnet vstest belgelerinde bulunabilir.
  • RunSettings Bağımsız değişken

Satır içi RunSettings , komut satırında "-- " sonrasındaki son bağımsız değişkenler olarak geçirilir (--'ın ardından gelen boşluğu not edin). Satır içi RunSettings çift olarak [name]=[value] belirtilir. Bir boşluk, birden çok [name]=[value] çifti ayırmak için kullanılır.

Örnek: dotnet test -- MSTest.DeploymentEnabled=false MSTest.MapInconclusiveToFailed=True

Daha fazla bilgi için bkz . Komut satırı aracılığıyla RunSettings bağımsız değişkenlerini geçirme.

Örnekler

  • Testleri geçerli dizinde projede çalıştırın:

    dotnet test
    
  • Projede test1 testleri çalıştırın:

    dotnet test ~/projects/test1/test1.csproj
    
  • Derlemeyi kullanarak test1.dll testleri çalıştırın:

    dotnet test ~/projects/test1/bin/debug/test1.dll
    
  • Testleri geçerli dizinde projede çalıştırın ve trx biçiminde bir test sonuçları dosyası oluşturun:

    dotnet test --logger trx
    
  • Testleri geçerli dizindeki projede çalıştırın ve bir kod kapsamı dosyası oluşturun (Coverlet toplayıcıları tümleştirmesini yükledikten sonra):

    dotnet test --collect:"XPlat Code Coverage"
    
  • Testleri geçerli dizindeki projede çalıştırın ve bir kod kapsamı dosyası oluşturun (yalnızca Windows):

    dotnet test --collect "Code Coverage"
    
  • Testleri geçerli dizinde projede çalıştırın ve konsola ayrıntılı ayrıntıyla oturum açın:

    dotnet test --logger "console;verbosity=detailed"
    
  • Testleri geçerli dizindeki projede çalıştırın ve TestResults klasöründeki trx günlükçüs ile testResults.trx dosyasına oturum açın:

    dotnet test --logger "trx;logfilename=testResults.trx"
    

    Günlük dosyası adı belirtildiğinden, çok hedefli bir proje söz konusu olduğunda her hedef çerçeve için aynı ad kullanılır. Her hedef çerçevenin çıktısı, önceki hedef çerçeveler için çıkışın üzerine yazar. Göreli yollar bu klasöre göre olduğundan, dosya test projesi klasöründeki TestResults klasöründe oluşturulur. Aşağıdaki örnekte, her hedef çerçeve için ayrı bir dosyanın nasıl üretildiği gösterilmektedir.

  • Testleri geçerli dizindeki projede çalıştırın ve her hedef çerçeve için benzersiz dosya adlarıyla TestResults klasöründeki dosyalara trx günlükçü ile oturum açın:

    dotnet test --logger:"trx;LogFilePrefix=testResults"
    
  • Testleri geçerli dizindeki projede çalıştırın ve TestResults klasöründe testResults.html için html günlükçü ile oturum açın:

    dotnet test --logger "html;logfilename=testResults.html"
    
  • Testleri geçerli dizinde projede çalıştırın ve test konağı kilitlendiğinde devam eden testleri rapor edin:

    dotnet test --blame
    
  • için (ikili günlük) bağımsız değişkenini -bl msbuildsağlayarak testleri projede test1 çalıştırın:

    dotnet test ~/projects/test1/test1.csproj -bl
    
  • MSBuild DefineConstants özelliğini DEVolarak ayarlayarak projede test1 testleri çalıştırın:

    dotnet test ~/projects/test1/test1.csproj -p:DefineConstants="DEV"
    

  • MSBuild TestTfmsInParallel özelliğini falseolarak ayarlayarak projede test1 testleri çalıştırın:

    dotnet test ~/projects/test1/test1.csproj -p:TestTfmsInParallel=false
    

Filtre seçeneği ayrıntıları

--filter <EXPRESSION>

<Expression> biçimindedir <property><operator><value>[|&<Expression>].

<property> , özniteliğidir Test Case. Popüler birim testi çerçeveleri tarafından desteklenen özellikler şunlardır:

Test Çerçevesi Desteklenen özellikler
MSTest
  • FullyQualifiedName
  • Veri Akışı Adı
  • ClassName
  • Öncelik
  • TestCategory
xUnit
  • FullyQualifiedName
  • DisplayName
  • Kategori
NUnit
  • FullyQualifiedName
  • Veri Akışı Adı
  • Kategori
  • Öncelik

<operator> özelliği ile değeri arasındaki ilişkiyi açıklar:

Operatör İşlev
= Tam eşleşme
!= Tam eşleşme değil
~ Contains
!~ İçermiyor

<value> bir dizedir. Tüm aramalar büyük/küçük harfe duyarlı değildir.

olmayan bir <operator> ifade otomatik olarak on contains FullyQualifiedName özelliği olarak kabul edilir (örneğin, dotnet test --filter xyz ile dotnet test --filter FullyQualifiedName~xyzaynıdır).

İfadeler koşullu işleçlerle birleştirilebilir:

Operatör İşlev
| VEYA
& AND

Koşullu işleçler kullanırken ifadeleri parantez içine alabilirsiniz (örneğin, (Name~TestMethod1) | (Name~TestMethod2)).

Seçmeli birim testi filtrelemeyi kullanma hakkında daha fazla bilgi ve örnek için bkz . Seçmeli birim testleri çalıştırma.

Ayrıca bkz.