dotnet test

Bu makale şu şekilde geçerlidir: ✔️ .net Core 2,1 SDK ve sonraki sürümleri

Name

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

Özeti

dotnet test [<PROJECT> | <SOLUTION> | <DIRECTORY> | <DLL>]
    [-a|--test-adapter-path <ADAPTER_PATH>] [--arch <ARCHITECTURE>]
    [--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>]
    [--filter <EXPRESSION>] [--interactive]
    [-l|--logger <LOGGER>] [--no-build]
    [--nologo] [--no-restore] [-o|--output <OUTPUT_DIRECTORY>] [--os <OS>]
    [-r|--results-directory <RESULTS_DIR>] [--runtime <RUNTIME_IDENTIFIER>]
    [-s|--settings <SETTINGS_FILE>] [-t|--list-tests]
    [-v|--verbosity <LEVEL>] [[--] <RunSettings arguments>]

dotnet test -h|--help

Açıklama

dotnet testKomut, belirli bir çözümde birim testlerini yürütmek için kullanılır. dotnet testKomut çözümü oluşturur ve çözümdeki her test projesi için bir test ana bilgisayarı uygulaması çalıştırır. Test ana bilgisayarı, test çerçevesini (örneğin, MSTest, NUnit veya xUnit) kullanarak belirtilen projedeki testleri yürütür 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.

Çok hedefli projeler için testler hedeflenen her çerçeve için çalıştırılır. test konağı ve birim testi çerçevesi, NuGet paketleri olarak paketlenmiştir ve proje için sıradan bağımlılıklar olarak geri yüklenir.

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

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

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
    <PackageReference Include="xunit" Version="2.4.1" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3" />
  </ItemGroup>

</Project>

Microsoft.NET.Test.SdkTest Konağı nerede, xunit Test çerçevesidir. Ve xunit.runner.visualstudio , xUnit Framework 'ün test ana bilgisayarı ile çalışmasına izin veren bir test bağdaştırıcısıdır.

Örtük geri yükleme

,,,, dotnet restore Ve gibi geri yükleme gerektiren tüm komutlar tarafından örtük olarak çalıştırıldığı için çalıştırmanız gerekmez dotnet new dotnet build dotnet run dotnet test dotnet publish dotnet pack . Örtük geri yüklemeyi devre dışı bırakmak için --no-restore seçeneğini kullanın.

dotnet restoreBu komut, açıkça geri yükleme işleminin, Azure DevOps Services veya derleme sistemlerindeki sürekli tümleştirme yapıları gibi, geri yüklemenin ne zaman gerçekleşeceğini açıkça denetmasının gerektiği bazı senaryolarda de yararlıdır.

NuGet beslemelerini yönetme hakkında daha fazla bilgi için dotnet restore belgelerinebakın.

İş yükü bildirimi İndirmeleri

Bu komutu çalıştırdığınızda, iş yükleri için reklam bildirimlerinin zaman uyumsuz karşıdan yükleme işlemini başlatır. Bu komut tamamlandığında indirme çalışmaya devam ediyorsa, indirme durdurulur. Daha fazla bilgi için bkz. reklam bildirimleri.

Bağımsız değişkenler

  • PROJECT | SOLUTION | DIRECTORY | DLL

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

    Belirtilmemişse, geçerli dizinde bir proje veya çözüm arar.

Seçenekler

  • -a|--test-adapter-path <ADAPTER_PATH>

    Ek test bağdaştırıcıları için aranacak bir dizin yolu. Yalnızca son eki olan .dll dosyalar .TestAdapter.dll incelenemiyor. Belirtilmemişse, test .dll dizini aranır.

  • --arch <ARCHITECTURE>

    Hedef mimariyi belirtir. Bu, belirtilen değerin varsayılan RID ile birleştirileceği çalışma zamanı tanımlayıcısı 'nı (RID)ayarlamaya yönelik bir toplu sözdizimidir. Örneğin, bir win-x64 makinede, --arch x86 RID öğesini olarak belirler win-x86 . Bu seçeneği kullanırsanız, -r|--runtime seçeneğini kullanmayın. .NET 6 Preview 7 ' den beri kullanılabilir.

  • --blame

    Testleri sorumluyu modunda çalıştırır. Bu seçenek, test ana bilgisayarının kilitlenmesine neden olan sorunlu testleri yalıtmak için yararlıdır. Kilitlenme algılandığında, TestResults/<Guid>/<Guid>_Sequence.xml çökmeden önce çalıştırılan testlerin sırasını yakalayan bir sıra dosyası oluşturur.

  • --blame-crash (.NET 5,0 SDK 'dan beri kullanılabilir)

    Testleri sorumluyu modunda çalıştırır ve test ana bilgisayarı beklenmedik bir şekilde çıktığında kilitlenme dökümünü 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ümlerinde otomatik olarak bir döküm alınacaktır. Testhost veya .NET 5,0 ' de çalıştırılan ve kilitlenen herhangi bir alt işlem için bir döküm oluşturur. Yerel koddaki kilitlenmeler, döküm oluşturmaz. bu seçenek Windows, macos ve Linux üzerinde kullanılabilir.

    yerel koddaki kilitlenme dökümleri veya .net Core 3,1 veya önceki sürümleri kullanılırken, yalnızca Windows, procdump kullanılarak toplanabilir. procdump.exe ve procdump64.exe IÇEREN bir dizin, yol veya PROCDUMP_PATH ortam değişkeninde olmalıdır. Araçları indirin. Şunu gösterir --blame .

    .NET 5,0 veya üzeri sürümlerde çalışan bir yerel uygulamadan kilitlenme dökümü toplamak için, ortam değişkeni olarak ayarlanarak ProcDump kullanımı zorunlu olabilir VSTEST_DUMP_FORCEPROCDUMP 1 .

  • --blame-crash-dump-type <DUMP_TYPE> (.NET 5,0 SDK 'dan beri kullanılabilir)

    Toplanacak kilitlenme bilgi dökümü türü. Şunu gösterir --blame-crash .

  • --blame-crash-collect-always (.NET 5,0 SDK 'dan beri kullanılabilir)

    Beklenen ve beklenmeyen test ana bilgisayarı çıkışında oluşan kilitlenme dökümünü toplar.

  • --blame-hang (.NET 5,0 SDK 'dan beri kullanılabilir)

    Testleri sorumluyu modunda çalıştırın ve bir test verilen zaman aşımını aştığında bir askıda kalma dökümü toplar.

  • --blame-hang-dump-type <DUMP_TYPE> (.NET 5,0 SDK 'dan beri kullanılabilir)

    Toplanacak kilitlenme bilgi dökümü türü. full, mini Veya olmalıdır none . noneBelirtildiğinde, test ana bilgisayarı zaman aşımında sonlandırılır, ancak hiçbir döküm toplanmaz. Şunu gösterir --blame-hang .

  • --blame-hang-timeout <TIMESPAN> (.NET 5,0 SDK 'dan beri kullanılabilir)

    Test başına zaman aşımı, bir askıda kalma dökümü tetiklendikten sonra test ana bilgisayarı işlemi ve tüm alt işlemleri dökülür ve sonlandırılmalıdır. Zaman aşımı değeri aşağıdaki biçimlerden birinde belirtilir:

    • 1.5 h, 1,5 saat, 1,5 saat
    • 90 milyon, 90min, 90 dakika, 90 dakika
    • 5400s, 5400sn, 5400second, 5400saniye
    • 5400000ms, 5400000mil, 5400000milisaniyelik, 5400000milliseconds

    Hiçbir birim kullanılmazsa (örneğin, 5400000), değerin milisaniye cinsinden olduğu varsayılır. Veri odaklı testlerle birlikte kullanıldığında, zaman aşımı davranışı kullanılan test bağdaştırıcısına bağlıdır. XUnit ve NUnit için zaman aşımı her test çalışmasının ardından yenilenir. MSTest için zaman aşımı tüm test çalışmaları için kullanılır. bu seçenek, ve sonraki sürümlerinde, netcoreapp2.1 Linux 'ta ve sonrasında netcoreapp3.1 ve macos ile veya sonraki sürümlerde Windows desteklenir net5.0 . Ve anlamına gelir --blame --blame-hang .

  • -c|--configuration <CONFIGURATION>

    Yapı yapılandırmasını tanımlar. Çoğu proje için varsayılandır Debug , ancak projenizde 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ştirilir. Daha fazla bilgi için bkz. test çalıştırmasını izleme ve çözümleme.

    .NET Core tarafından desteklenen herhangi bir platformda kod kapsamı toplamak için, Kapak ' i yükleyip --collect:"XPlat Code Coverage" seçeneğini kullanın.

    Windows, seçeneğini kullanarak kod kapsamını toplayabilirsiniz --collect "Code Coverage" . bu seçenek, Visual Studio 2019 Enterprise açılabilen bir . coverage dosyası üretir. Daha fazla bilgi için bkz. kod kapsamını kullanma ve kod kapsamı analizini özelleştirme.

  • -d|--diag <LOG_FILE>

    Test platformu için tanılama modunu sağlar ve belirtilen dosyaya ve bunun yanındaki dosyalara tanılama iletileri yazar. İletileri günlüğe kaydeden işlem, *.host_<date>.txt Test ana bilgisayar günlüğü için ve veri toplayıcı günlüğü için oluşturulan dosyaları belirler *.datacollector_<date>.txt .

  • -f|--framework <FRAMEWORK>

    dotnettest ikilileri için veya .NET Framework test ana bilgisayarının kullanımını zorlar. Bu seçenek yalnızca kullanılacak ana bilgisayar türünü belirler. Kullanılacak gerçek çerçeve sürümü test projesinin runtimeconfig. JSON tarafından belirlenir. Belirtilmediğinde, TargetFramework derleme özniteliği konak türünü belirlemekte kullanılır. bu öznitelik .dll olmadığında .NET Framework ana bilgisayar kullanılır.

  • --filter <EXPRESSION>

    Geçerli projede verilen ifadeyi kullanarak testleri filtreler. 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 örnekler için bkz. Seçmeli birim testlerini çalıştırma.

  • -?|-h|--help

    Komutunun nasıl kullanıla ilgili bir açıklama yazdırır.

  • --interactive

    Komutun Kullanıcı girişini veya eylemini durdurmasına ve beklemesine izin verir. Örneğin, kimlik doğrulamasını tamamlamaya yönelik. .NET Core 3,0 SDK 'dan beri kullanılabilir.

  • -l|--logger <LOGGER>

    Test sonuçları için bir günlükçü belirtir. MSBuild aksine, dotnet testi kısaltmalar kabul etmez: kullanım yerine -l "console;v=d" -l "console;verbosity=detailed" . Birden çok günlüğü etkinleştirmek için parametreyi birden çok kez belirtin.

  • --no-build

    Test projesi çalıştırılmadan önce derlenmez. Ayrıca,-bayrağını örtülü olarak ayarlar --no-restore .

  • --nologo

    Testleri, Microsoft TestPlatform başlığını görüntülemeden çalıştırın. .NET Core 3,0 SDK 'dan beri kullanılabilir.

  • --no-restore

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

  • -o|--output <OUTPUT_DIRECTORY>

    Çalıştırılacak ikililerin bulunacağı dizin. Belirtilmemişse, varsayılan yol olur ./bin/<configuration>/<framework>/ . Birden çok hedef çerçevesi olan projeler için ( TargetFrameworks özelliği aracılığıyla), --framework Bu seçeneği ne zaman belirttiğinizde de tanımlamanız gerekir. dotnet test her zaman çıkış dizininden testleri çalıştırır. AppDomain.BaseDirectory' I, çıkış dizininde test varlıklarını kullanmak için kullanabilirsiniz.

  • --os <OS>

    Hedef işletim sistemini (OS) belirtir. Bu, belirtilen değerin varsayılan RID ile birleştirileceği çalışma zamanı tanımlayıcısı 'nı (RID)ayarlamaya yönelik bir toplu sözdizimidir. Örneğin, bir win-x64 makinede, --os os RID öğesini olarak belirler os-x64 . Bu seçeneği kullanırsanız, -r|--runtime seçeneğini kullanmayın. .NET 6 Preview 7 ' den beri kullanılabilir.

  • -r|--results-directory <RESULTS_DIR>

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

  • --runtime <RUNTIME_IDENTIFIER>

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

  • -s|--settings <SETTINGS_FILE>

    Testleri .runsettings çalıştırma için kullanabileceğiniz dosya. öğesinin TargetPlatform (x86|x64) üzerinde hiçbir etkisi dotnet test yoktur. x86'ya yönelik testleri çalıştırmak için .NET Core'un x86 sürümünü yükleyin. Testlerindotnet.exe için kullanılacak olan bitliktir. Daha fazla bilgi için aşağıdaki kaynaklara bakın:

  • -t|--list-tests

    Testleri çalıştırma yerine bulunan testleri listele.

  • -v|--verbosity <LEVEL>

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

  • RunSettings Bağımsız değişken

Satır içi, komut satırı üzerinde "-- " ifadesinin sonundaki son bağımsız değişkenler olarak RunSettings geçirildi (--' sonrasındaki alana dikkat). Satır içi RunSettings çift olarak [name]=[value] belirtilir. Bir boşluk, birden çok çifti ayırmak için [name]=[value] 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

  • Geçerli dizinde projesinde testleri çalıştırın:

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

    dotnet test ~/projects/test1/test1.csproj
    
  • Testleri geçerli dizinde projesinde çalıştırın ve trx biçiminde bir test sonuçları dosyası oluşturma:

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

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

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

    dotnet test --logger "console;verbosity=detailed"
    
  • Geçerli dizinde projesinde testleri çalıştırın ve test ana bilgisayarı kilitlenmesi üzerine devam eden testleri raporla:

    dotnet test --blame
    

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

--filter <EXPRESSION>

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

<property> , Test Case özniteliğidir. Popüler birim testi çerçeveleri tarafından desteklenen özellikler aşağıda ve aşağıda ve liste listelerindedir:

Test Çerçevesi Desteklenen özellikler
MSTest
  • Fullyqualifiedname
  • Name
  • Classname
  • Öncelik
  • TestCategory
xUnit
  • Fullyqualifiedname
  • DisplayName
  • Kategori
NUnit
  • Fullyqualifiedname
  • Name
  • TestCategory
  • Öncelik

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

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

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

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

İfadeler koşullu işleçlerle bir araya olabilir:

Operatör İşlev
| VEYA
& AND

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

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

Ayrıca bkz.