dotnet test
Bu makale şunlar için geçerlidir: ✔️ .NET Core 3.1 SDK ve sonraki sürümler
dotnet test
- Birim testlerini yürütmek için kullanılan .NET test sürücüsü.
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
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 VSTest
tabanlı 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 false
ayarlayı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.
, , dotnet publish
ve dotnet pack
gibi dotnet test
dotnet run
dotnet build
dotnet new
geri 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.
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.
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.
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.Platform
desteklenen 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 olarakwin-x86
ayarlar. 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
1
olarak ayarlanarakVSTEST_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) vemini
. öğ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
none
olmalıdırfull
mini
. Belirtildiğindenone
, 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ümlerdenetcoreapp3.1
ve veya sonraki sürümlerdenet5.0
macOS'ta desteklenir. ve--blame-hang
ifade 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
yerinev
). - Ö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.- Anahtarın kısaltılmış biçimini değil tam adını kullanın (örneğin,
--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ığıylaTargetFrameworks
) 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.
--os <OS>
Hedef işletim sistemini (OS) 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--os linux
RID değerini olaraklinux-x64
ayarlar. Bu seçeneği kullanırsanız, seçeneğini kullanmayın-r|--runtime
. .NET 6'dan itibaren kullanılabilir.
--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. öğesininTargetPlatform
(x86|x64) etkisidotnet test
yoktur. 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]
vediag[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
msbuild
iletilir. Bu durumda, kullanılabilir bağımsız değişkenler dotnet msbuild belgelerinde bulunabilir. - Bir .dll veya .exe belirttiğinizde, çağrı adresine
vstest
iletilir. Bu durumda, kullanılabilir bağımsız değişkenler dotnet vstest belgelerinde bulunabilir.
- Bir proje, çözüm veya dizin belirttiğinizde veya bu bağımsız değişkeni atlarsanız, çağrı adresine
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.
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
msbuild
sağlayarak testleri projedetest1
çalıştırın:dotnet test ~/projects/test1/test1.csproj -bl
MSBuild
DefineConstants
özelliğiniDEV
olarak ayarlayarak projedetest1
testleri çalıştırın:dotnet test ~/projects/test1/test1.csproj -p:DefineConstants="DEV"
MSBuild
TestTfmsInParallel
özelliğinifalse
olarak ayarlayarak projedetest1
testleri çalıştırın:dotnet test ~/projects/test1/test1.csproj -p:TestTfmsInParallel=false
--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 |
|
xUnit |
|
NUnit |
|
<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~xyz
aynı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.
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin: