MSTest SDK'ya genel bakış
MSTest.Sdk , MSTest uygulamaları oluşturmaya yönelik bir MSBuild proje SDK'sıdır . Bu SDK olmadan bir MSTest uygulaması derlemek mümkündür, ancak MSTest SDK'sı şu şekildedir:
- MSTest ile test için birinci sınıf bir deneyim sağlamaya yönelik olarak uyarlanmıştır.
- Çoğu kullanıcı için önerilen hedef.
- Diğer kullanıcılar için kolayca yapılandırılabilir.
MSTest SDK'sı, MSTest çalıştırıcısını kullanarak testlerinizi bulur ve çalıştırır.
Projenizin Project
düğümünün Sdk
özniteliğini güncelleyerek bir projede MSTest.Sdk
etkinleştirebilirsiniz.
<Project Sdk="MSTest.Sdk/3.6.3">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
Not
/3.6.3
örnek olarak verilmiştir ve daha yeni bir sürümle değiştirilebilir.
Sürümlerin işlenmesini kolaylaştırmak için global.json dosyasını kullanarak SDK sürümünü çözüm düzeyinde ayarlamanızı öneririz. Örneğin, proje dosyanız şöyle görünür:
<Project Sdk="MSTest.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
Ardından, MSTest.Sdk
sürümünü global.json dosyasında aşağıdaki gibi belirtin:
{
"msbuild-sdks": {
"MSTest.Sdk": "3.6.3"
}
}
Daha fazla bilgi için bkz . MSBuild proje SDK'larını kullanma.
Projeyi yaptığınızda build
, projeniz tarafından ayarlanan standart NuGet iş akışı kullanılarak gerekli tüm bileşenler geri yüklenir ve yüklenir.
Testlerinizi oluşturmak ve çalıştırmak için başka bir şeye ihtiyacınız yok ve "klasik" bir MSTest projesinde kullanılan aynı araçları (örneğin, dotnet test
veya Visual Studio ) kullanabilirsiniz.
Önemli
MSTest.Sdk
öğesine geçerek, MSTest çalıştırıcısını, dotnet test ile birlikte kullanmayı kabul edersiniz. Bu, CI ve yerel CLI çağrılarınızı değiştirmeyi gerektirir ve ayrıca .runsettings'in kullanılabilir girdilerini etkiler. Çalıştırıcıyı değiştirerek eski tümleştirmeleri ve araçları MSTest.Sdk
kullanmaya devam edebilirsiniz.
Koşucuyu seçin
Varsayılan olarak, MSTest SDK'sı MSTest çalıştırıcısına dayanır, ancak <UseVSTest>true</UseVSTest>
özelliğini ekleyerek VSTest'e geçebilirsiniz.
MSTest çalıştırıcısını genişlet
Deneyimi bir dizi NuGet paket uzantısı aracılığıyla özelleştirebilirsiniz. Bu deneyimi basitleştirmek ve geliştirmek için MSTest SDK'sı iki özellik sunar:
MSTest çalıştırıcısı profili
Profil kavramı, test projenize uygulanacak varsayılan yapılandırma ve uzantı kümesini seçmenize olanak tanır.
Özelliği TestingExtensionsProfile
kullanarak aşağıdaki üç profilden birini seçip profili ayarlayabilirsiniz:
None
- Hiçbir uzantı etkinleştirilmedi.Default
- MSTest.SDK'nın bu sürümü için önerilen uzantıları etkinleştirir. Özellik açıkça ayarlı olmadığında bu varsayılan değerdir.Aşağıdaki uzantıları etkinleştirir:
AllMicrosoft
- Microsoft tarafından gönderilen tüm uzantıları etkinleştirin (kısıtlayıcı lisansa sahip uzantılar dahil).Aşağıdaki uzantıları etkinleştirir:
Fakes (MSTest.Sdk 3.7.0+)
İşte None
profilinin kullanıldığı tam bir örnek:
<Project Sdk="MSTest.Sdk/3.6.3">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<TestingExtensionsProfile>None</TestingExtensionsProfile>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
Uzantı/Profil | Hiç kimse | Varsayılan | AllMicrosoft |
---|---|---|---|
Kod Kapsamı | ✔️ | ✔️ | |
çökme dökümü | ✔️ | ||
Sahtekarlıklar | ✔️ (MSTest.Sdk 3.7.0+) | ||
Kilitlenme Dökümü | ✔️ | ||
Anında Yükleme | ✔️ | ||
Yeniden Dene | ✔️ | ||
Trx | ✔️ | ✔️ |
Uzantıları etkinleştirme veya devre dışı bırakma
Uzantılar, deseni Enable[NugetPackageNameWithoutDots]
ile MSBuild özellikleri tarafından etkinleştirilebilir ve devre dışı bırakılabilir.
Örneğin, kilitlenme bilgi dökümü uzantısını etkinleştirmek için (NuGet paketi Microsoft.Testing.Extensions.CrashDump), aşağıdaki özelliği EnableMicrosoftTestingExtensionsCrashDump
şu şekilde ayarlayarak true
kullanabilirsiniz:
<Project Sdk="MSTest.Sdk/3.6.3">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableMicrosoftTestingExtensionsCrashDump>true</EnableMicrosoftTestingExtensionsCrashDump>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
Kullanılabilir tüm uzantıların listesi için bkz . Microsoft.Testing.Platform uzantıları.
Uyarı
Farklılık gösterebileceğinden her uzantının lisans koşullarını gözden geçirmek önemlidir.
Etkin ve devre dışı bırakılmış uzantılar, seçtiğiniz uzantı profili tarafından sağlanan uzantılarla birleştirilir.
Örtük Default
profilinin üzerinde ek bir uzantı etkinleştirmek için bu özellik deseni kullanılabilir (önceki CrashDumpExtension örneğinde görüldüğü gibi).
Seçili profilden gelen bir uzantıyı da devre dışı bırakabilirsiniz. Örneğin, <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
uzantısını devre dışı bırakmak için MS Code Coverage
ayarını yapın.
<Project Sdk="MSTest.Sdk/3.6.3">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
Özellikler
Seçilen koşucu ve koşucuya özgü uzantıların ötesinde, MSTest.Sdk
test deneyiminizi basitleştirmek ve geliştirmek için ek özellikler de sunar.
.NET Aspire ile test
.NET Aspire, gözlemlenebilir, üretime hazır, dağıtılmış uygulamalar oluşturmaya yönelik, belirli varsayımlara sahip, buluta hazır bir yığındır. .NET Aspire, buluta özel belirli endişeleri gideren bir NuGet paketleri koleksiyonu aracılığıyla sunulur. Daha fazla bilgi için bkz . .NET Aspire belgeleri.
Not
Bu özellik MSTest.Sdk 3.4.0'dan kullanılabilir
Özelliği EnableAspireTesting
olarak true
ayarlayarak, Aspire
ve MSTest
ile test etmek için ihtiyacınız olan tüm bağımlılıkları ve varsayılan using
yönergelerini getirebilirsiniz.
<Project Sdk="MSTest.Sdk/3.4.0">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableAspireTesting>true</EnableAspireTesting>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
Playwright ile test et
Playwright, modern web uygulamaları için güvenilir uçtan uca test olanağı sağlar. Daha fazla bilgi için resmi Playwright belgelerine bakın.
Not
Bu özellik MSTest.Sdk 3.4.0'dan kullanılabilir
Özelliği EnablePlaywright
olarak ayarlayarak, true
ile using
için gerekli olan tüm bağımlılıkları ve varsayılan MSTest
yönergelerini Playwright
ile test etmek amacıyla ekleyebilirsiniz.
<Project Sdk="MSTest.Sdk/3.4.0">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnablePlaywright>true</EnablePlaywright>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
MSTest SDK'sına geçiş
MSTest SDK'sına geçiş yapmak için gereken aşağıdaki adımları göz önünde bulundurun.
Projenizi güncelleştirme
Mevcut bir MSTest test projesini MSTest SDK'sına geçirirken, test projenizin en üstündeki girdiyi Sdk="Microsoft.NET.Sdk"
ile değiştirerek başlayın Sdk="MSTest.Sdk"
- Sdk="Microsoft.NET.Sdk"
+ Sdk="MSTest.Sdk"
sürümüne global.json
ekleyin:
{
"msbuild-sdks": {
"MSTest.Sdk": "3.6.3"
}
}
Ardından projenizi basitleştirmeye başlayabilirsiniz.
Varsayılan özellikleri kaldır:
- <EnableMSTestRunner>true</EnableMSTestRunner>
- <OutputType>Exe</OutputType>
- <IsPackable>false</IsPackable>
- <IsTestProject>true</IsTestProject>
Varsayılan paket başvurularını kaldır:
- <PackageReference Include="MSTest"
- <PackageReference Include="MSTest.TestFramework"
- <PackageReference Include="MSTest.TestAdapter"
- <PackageReference Include="MSTest.Analyzers"
- <PackageReference Include="Microsoft.NET.Test.Sdk"
Son olarak, kullandığınız uzantı profiline bağlı olarak paketlerden Microsoft.Testing.Extensions.*
bazılarını da kaldırabilirsiniz.
CI'nizi güncelleştirme
Projelerinizi güncelledikten sonra, MSTest runner
(varsayılan) kullanıyorsanız ve dotnet test
'e güvenerek testlerinizi çalıştırıyorsanız, CI yapılandırmanızı güncellemeniz gerekir. Daha fazla bilgi edinmek ve gerekli tüm değişiklikleri anlamanızı sağlamak için bkz: dotnet test tümleştirmesi.
İşte Azure DevOps'ta DotNetCoreCLI
görevinin kullanımı sırasında bir örnek güncelleştirme:
\- task: DotNetCoreCLI@2
inputs:
command: 'test'
projects: '**/**.sln'
- arguments: '--configuration Release'
+ arguments: '--configuration Release -p:TestingPlatformCommandLineArguments="--report-trx --results-directory $(Agent.TempDirectory) --coverage"'
Bilinen sınırlamalar
NuGet tarafından sağlanan MSBuild SDK'ları (MSTest.Sdk dahil) sürümünü güncelleştirme konusunda sınırlı araç desteğine sahiptir; yani NuGet paketlerini yönetmek için normal NuGet güncelleştirmesi ve Visual Studio kullanıcı arabirimi beklendiği gibi çalışmaz. Daha fazla ayrıntı için şu soruna bakın: NuGet#13127.
Not
Bu sınırlama MSTest SDK'sına değil, NuGet tarafından sağlanan herhangi bir MSBuild SDK'sına özgüdür.
Dependabot,