Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Microsoft.Testing.Platform, sürekli tümleştirme (CI) işlem hatları, CLI, Visual Studio Test Gezgini ve VS Code Test Gezgini dahil olmak üzere tüm bağlamlarda testleri çalıştırmak için VSTest basit ve taşınabilir bir alternatiftir. Microsoft.Testing.Platform doğrudan test projelerinize eklenir ve testlerinizi çalıştırmak için gereken vstest.console
veya dotnet test
gibi başka uygulama bağımlılığı yoktur.
Microsoft.Testing.Platform
açık kaynaktır.
Microsoft.Testing.Platform
kodu microsoft/testfx GitHub deposunda bulabilirsiniz.
Microsoft.Testing.Platform sütunları
Bu yeni test platformu .NET Geliştirici Deneyimi Testi ekibinin deneyimi üzerine kurulmuştur ve .NET Core'un 2016'da piyasaya sürülmesinin ardından karşılaşılan zorlukları ele almayı amaçlamaktadır. .NET Framework ile .NET Core/.NET arasında yüksek düzeyde uyumluluk olsa da, eklenti sistemi ve .NET derlemelerinin yeni olası biçim faktörleri gibi bazı temel özellikler, geçerli VSTest platformu mimarisiyle yeni çalışma zamanı özelliğini geliştirmeyi veya tam olarak desteklemeyi karmaşık hale getirmektedir.
Yeni test platformunun evrimi için temel etmenler aşağıda ayrıntılı olarak yer alır:
Determinizm: Aynı testleri farklı bağlamlarda (yerel, CI) çalıştırmanın aynı sonucu üretmesini sağlamak. Yeni çalışma zamanı, bir test çalıştırmasını koordine etmek için yansımayı veya başka bir dinamik .NET çalışma zamanı özelliğini kullanmaz.
Çalışma Zamanı saydamlığı: Test çalışma zamanı test çerçevesi koduyla çakışmaz,
AppDomain
veyaAssemblyLoadContext
gibi yalıtılmış bağlamlar oluşturmaz ve yansıma veya özel derleme çözümleyicileri kullanmaz.Uzantıların derleme zamanı kaydı: Test çerçeveleri ve işlem içi/dışı uzantılar gibi uzantılar, determinizmin sağlanması ve tutarsızlıkların algılanmasını kolaylaştırmak için derleme zamanında kaydedilir.
Sıfır bağımlılıkları: Platformun çekirdeği, desteklenen çalışma zamanlarından başka bağımlılığı olmayan tek bir .NET derlemesi
Microsoft.Testing.Platform.dll
.Barındırılabilir: Test çalışma zamanı herhangi bir .NET uygulamasında barındırılabilir. Bir konsol uygulaması genellikle testleri çalıştırmak için kullanılırken, herhangi bir .NET uygulamasında bir test uygulaması oluşturabilirsiniz. Bu, sınırlamaların olabileceği cihazlar veya tarayıcılar gibi özel bağlamlar içinde testleri çalıştırmanıza olanak tanır.
tüm .NET form faktörlerini destekleyin: Yerel AOT dahil olmak üzere geçerli ve gelecekteki .NET form faktörlerini destekleyin.
Performant: Çalışma zamanını temel olmayan kodla şişirmemek için özellikler ve uzantı noktaları arasında doğru dengeyi bulma. Yeni test platformu, bunun nasıl yapılacağının uygulama ayrıntılarını sağlamak yerine bir test çalıştırmasını "düzenleme" için tasarlanmıştır.
Yeterince Genişletilebilir: Yeni platform, genişletme noktaları üzerine kurularak çalışma zamanı yürütmesinin maksimum düzeyde özelleştirilmesine olanak tanır. Test işlemi ana bilgisayarını yapılandırmanıza, test işlemini gözlemlemenize ve test ana bilgisayarı işlemi içindeki test çerçevesindeki bilgileri kullanmanıza olanak tanır.
Tek modül dağıtımı: Barındırılabilirlik özelliği, tek bir modül dağıtım modelini etkinleştirir. Burada tek bir derleme sonucu, farklı yürütülebilir modülleri göndermeye gerek kalmadan hem işlem dışı hem de işlem içi tüm genişletilebilirlik noktalarını desteklemek için kullanılabilir.
Desteklenen test çerçeveleri
- MSTest. MSTest'te,
Microsoft.Testing.Platform
desteği MSTest çalıştırıcısıaracılığıyla gerçekleştirilir. - NUnit. NUnit'de,
Microsoft.Testing.Platform
desteği NUnit çalıştırıcısıaracılığıyla gerçekleştirilir. - xUnit.net: xUnit.net içinde,
Microsoft.Testing.Platform
desteği xUnit.net çalıştırıcısıaracılığıyla sağlanır. - TUnit: tamamen
Microsoft.Testing.Platform
üzerinde oluşturuldu. Daha fazla bilgi için TUnit belgelerine bakın.
Testleri çalıştırma ve hatalarını ayıklama
Microsoft.Testing.Platform
test projeleri doğrudan çalıştırılabilir (veya hata ayıklanabilir) yürütülebilir dosyalar olarak oluşturulur. Ek bir test çalıştırma konsolu veya komutu yoktur. Çoğu yürütülebilir dosya için tipik olan bir hata varsa, uygulama sıfır olmayan bir çıkış koduyla çıkar. Bilinen çıkış kodları hakkında daha fazla bilgi için bkz. Microsoft.Testing.Platform çıkış kodları.
Tavsiye
komut satırı seçeneğini kullanarak belirli bir --ignore-exit-code
yoksayabilirsiniz.
ayrıca, TestingPlatformCommandLineArguments
MSBuild özelliğini kullanarak proje dosyasındaki belirli bir test projesine uygulanan komut satırı seçeneklerini de ayarlayabilirsiniz. Test oturumunda tüm testlerin yoksayıldığı ve normalde çıkış kodu 8 ile sonuçlanan (test oturumu hiç test çalıştırmadı) test projeleri, yaygın kullanım örneklerinden biridir. Bu senaryoda, proje dosyanızdaki bir PropertyGroup
altına aşağıdakileri ekleyebilirsiniz:
<TestingPlatformCommandLineArguments>$(TestingPlatformCommandLineArguments) --ignore-exit-code 8</TestingPlatformCommandLineArguments>
Önemli
Varsayılan olarak, Microsoft.Testing.Platform
telemetri toplar. Vazgeçme hakkında daha fazla bilgi ve seçenekler için bkz. Microsoft.Testing.Platform telemetri.
test projesini dotnet publish
kullanarak yayımlamak ve uygulamayı doğrudan çalıştırmak, testlerinizi çalıştırmanın başka bir yoludur. Örneğin, ./Contoso.MyTests.exe
'ı çalıştırma. Bazı senaryolarda yürütülebilir dosyayı üretmek için dotnet build
kullanmak da mümkün olsa da, Native AOTgibi göz önünde bulundurulması gereken uç durumlar olabilir.
dotnet run
kullanma
test projenizi derlemek ve çalıştırmak için dotnet run
komutu kullanılabilir. Bu, bazen en yavaş olsa da testlerinizi çalıştırmanın en kolay yoludur. Test projesinin gerektiğinde yeniden oluşturulmasını sağladığından, testleri yerel olarak düzenlerken ve çalıştırırken dotnet run
kullanmak pratik bir işlemdir.
dotnet run
, projeyi otomatik olarak geçerli klasörde de bulur.
dotnet run --project Contoso.MyTests
dotnet run
hakkında daha fazla bilgi için bkz. dotnet run.
dotnet exec
kullanma
dotnet exec
veya dotnet
komutu, önceden oluşturulmuş bir test projesini yürütmek (veya çalıştırmak) için kullanılır; bu, uygulamayı doğrudan çalıştırmaya alternatiftir.
dotnet exec
, yerleşik test projesi dll'sinin yolunu gerektirir.
dotnet exec Contoso.MyTests.dll
ya da
dotnet Contoso.MyTests.dll
Uyarı
Test projesi yürütülebilir dosyasının (*.exe) yolunun sağlanması bir hatayla sonuçlanır:
Error:
An assembly specified in the application dependencies manifest
(Contoso.MyTests.deps.json) has already been found but with a different
file extension:
package: 'Contoso.MyTests', version: '1.0.0'
path: 'Contoso.MyTests.dll'
previously found assembly: 'S:\t\Contoso.MyTests\bin\Debug\net8.0\Contoso.MyTests.exe'
dotnet exec
hakkında daha fazla bilgi için bkz. dotnet exec .
dotnet test
kullanma
Microsoft.Testing.Platform
, yeni yürütme senaryosunu etkinleştirirken testlerinizi daha önce olduğu gibi çalıştırabilmenizi sağlayan vstest.console.exe
ve dotnet test
ile bir uyumluluk katmanı sunar.
dotnet test Contoso.MyTests.dll
Seçenekler
Aşağıdaki listede yalnızca platform seçenekleri açıklanmıştır. Her uzantının getirdiği belirli seçenekleri görmek için uzantı belgeleri sayfasına bakın veya --help
seçeneğini kullanın.
@
Yanıt dosyasının adını belirtir. Yanıt dosyası adı, @ karakteri ile yanıt dosyası adı arasında boşluk olmadan @ karakterini hemen izlemelidir.
Yanıt dosyasındaki seçenekler, komut satırında o konumdaymış gibi yorumlanır. Yanıt dosyasındaki her bağımsız değişkenin aynı satırda başlaması ve bitmesi gerekir. Çizgileri birleştirmek için ters eğik çizgi karakterini () kullanamazsınız. Yanıt dosyası kullanmak, terminal sınırlarını aşabilecek çok uzun komutlar için yardımcı olur. Yanıt dosyasını satır içi komut satırı argümanlarıyla birleştirebilirsiniz. Örneğin:
./TestExecutable.exe @"filter.rsp" --timeout 10s
burada filter.rsp aşağıdaki içeriklere sahip olabilir:
--filter "A very long filter"
Ya da tek bir rsp dosyası hem zaman aşımını hem de filtreyi aşağıdaki gibi belirtmek için kullanılabilir:
./TestExecutable.exe @"arguments.rsp"
--filter "A very long filter" --timeout 10s
--config-file
bir testconfig.json dosyası belirtir.
--diagnostic
Tanı günlük kaydı etkinleştirir. Varsayılan kayıt düzeyi
Trace
. Dosya çıktı dizininde aşağıdaki ad biçiminde yazılırlog_[MMddHHssfff].diag
.--diagnostic-filelogger-synchronouswrite
Yerleşik dosya günlükçüsüsünü zaman uyumlu bir şekilde günlükleri yazmaya zorlar. İşlemin çöktüğü durumlarda (yani günlük girdilerini kaybetmek istemediğiniz senaryolarda) kullanışlıdır. Bu, test yürütmeyi yavaşlatır.
--diagnostic-output-directory
Tanılama günlüğünün çıkış dizini belirtilmezse, dosya varsayılan TestResults dizininde oluşturulur.
--diagnostic-output-fileprefix
Günlük dosyası adı için önek. Varsayılan olarak
"log_"
.--diagnostic-verbosity
--diagnostic
anahtarı kullanıldığında ayrıntı seviyesini tanımlar. Kullanılabilir değerlerTrace
,Debug
,Information
,Warning
,Error
veyaCritical
' dır.--exit-on-process-exit
Bağımlı süreç sona ererse test sürecinden çıkın. PID sağlanmalıdır.
--help
komutunun nasıl kullanılacağına ilişkin bir açıklama yazdırır.
--ignore-exit-code
Sıfır olmayan bazı çıkış kodlarının yoksayılmasına ve bunun yerine
0
olarak döndürülmesini sağlar. Daha fazla bilgi için bkz. Belirli Çıkış Kodlarını Yoksayma.--info
.NET Test Uygulaması hakkında aşağıdaki gibi gelişmiş bilgileri görüntüler:
- Bu platform.
- Ortam.
- Her kayıtlı komut satırı sağlayıcısı, örneğin
name
,version
,description
veoptions
gibi. - Her kayıtlı araç, örneğin
command
,name
,version
,description
ve tüm komut satırı sağlayıcıları gibi.
Bu özellik, aynı komut satırı seçeneğini kaydeden uzantıları veya bir uzantının (veya platformun) birden çok sürümü arasındaki kullanılabilir seçeneklerdeki değişiklikleri anlamak için kullanılır.
--list-tests
Kullanılabilir testleri listeleyin. Testler yürütülmeyecek.
--maximum-failed-tests
Belirli bir sayıya ulaşıldığında test çalıştırmasını durduracak maksimum test hatası sayısını tanımlar. Bu anahtar desteği için çerçeve yazarlarının
IGracefulStopTestExecutionCapability
özelliğini uygulaması gerekir. Bu miktarda test hatasına ulaşıldığında çıkış kodu 13'tür. Daha fazla bilgi için bkz. microsoft.testing.platform çıkış kodları .Uyarı
Bu özellik, 1.5 sürümünden itibaren Microsoft.Testing.Platform'da kullanılabilir.
--minimum-expected-tests
Çalıştırılması beklenen en az test sayısını belirtir. Varsayılan olarak, en az bir testin çalıştırılması beklenir.
--results-directory
Test sonuçlarının yerleştirileceği dizin. Belirtilen dizin yoksa oluşturulur. Varsayılan değer, test uygulamasını içeren dizinde
TestResults
.--timeout
Küresel test yürütme zaman aşımı. Bir bağımsız değişkeni,
<value>[h|m|s]
biçiminde bir dizge olarak alır ve burada<value>
kayan sayıdır.
MSBuild entegrasyonu
Microsoft.Testing.Platform.MSBuild NuGet paketi, MSBuild ile Microsoft.Testing.Platform
için çeşitli tümleştirmeler sağlar:
-
dotnet test
için destek. Daha fazla bilgi için dotnet test ile test etme kısmına bakın. -
ProjectCapability
veVisual Studio
Test Gezgini tarafından gereksinim duyulanVisual Studio Code
desteği. - Giriş noktasının otomatik olarak oluşturulması (
Main
yöntemi). - Yapılandırma dosyasının otomatik olarak oluşturulması.
Uyarı
Bu tümleştirme geçişli bir şekilde çalışır (bu pakete başvuran başka bir projeye başvuran bir proje pakete başvuruyor gibi davranır) ve IsTestingPlatformApplication
MSBuild özelliği aracılığıyla devre dışı bırakılabilir.
Ayrıca bkz.
- Microsoft.Testing.Platform ve VSTest karşılaştırma
- Microsoft.Testing.Platform uzantıları
- Microsoft.Testing.Platform telemetri
- Microsoft.Testing.Platform çıkış kodları