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.
MSTest, Microsoft Testing Framework, .NET uygulamaları için bir test çerçevesidir. Testleri yazmanıza ve yürütmenize olanak tanır ve test paketlerine Visual Studio ve Visual Studio Code Test Explorers, .NET CLI ve birçok CI işlem hattıyla tümleştirme sağlar.
MSTest, GitHub'da barındırılan tüm desteklenen .NET hedefleri (.NET Framework, .NET Core, .NET, UWP, WinUI vb.) ile çalışan tam olarak desteklenen, açık kaynak ve platformlar arası bir test çerçevesidir.
Çalıştırma ayarları
Birim testlerinin nasıl çalıştırıldığını yapılandırmak için bir .runsettings dosyası kullanılabilir. Çalıştırma ayarları ve platformla ilgili yapılandırmalar hakkında daha fazla bilgi edinmek için VSTest runsettings belgelerine veya MSTest runner runsettings belgelerine göz atabilirsiniz.
MSTest öğesi
Aşağıdaki runsettings girdileri MSTest'in nasıl davranacağını yapılandırmanıza olanak sağlar.
| Yapılandırma | Varsayılan | Değerler |
|---|---|---|
| MontajTemizlemeZaman Aşımı | 0 | Her bir montaj temizleme yöntemi örneğine uygulanacak zaman aşımını genel olarak belirtin.
[Timeout] derleme temizleme yönteminde belirtilen öznitelik genel zaman aşımını geçersiz kılar. |
| AssemblyInitializeTimeout | 0 | Derleme başlatma yönteminin her örneğine uygulanacak zaman aşımını genel olarak belirtin.
[Timeout] derleme başlatma yönteminde belirtilen öznitelik genel zaman aşımını geçersiz kılar. |
| AssemblyResolution | yanlış | Birim testlerini bulup çalıştırırken ek montajların yollarını belirleyebilirsiniz. Örneğin, test derlemesi ile aynı dizinde olmayan bağımlılık derlemeleri için bu yolları kullanın. Yol belirtmek için Dizin Yolu öğesi kullanın. Yollar ortam değişkenlerini içerebilir.<AssemblyResolution> <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/> </AssemblyResolution>Bu özellik yalnızca .NET Framework hedefi kullanılırken uygulanır. |
| CaptureTraceOutput | doğru | Çalışmakta olan teste ilişkilendirilecek, Console.Write*, Trace.Write* ve Debug.Write* API'lerinden gelen kısa mesajları yakalayın. |
| ClassCleanupLifecycle | EndOfClass | Sınıf temizleme işleminin derlemenin sonunda gerçekleşmesini istiyorsanız EndOfAssembly olarak ayarlayın. (MSTest v4'ten itibaren artık desteklenmeyen, varsayılan ve tek ClassCleanup davranışı olarak EndOfClass) |
| ClassCleanupTimeout | 0 | Sınıf temizleme yönteminin her örneğine uygulanacak zaman aşımını genel olarak belirtin.
[Timeout] sınıf temizleme yönteminde belirtilen öznitelik genel zaman aşımını geçersiz kılar. |
| ClassInitializeTimeout | 0 | Sınıf başlatma yönteminin her örneğine uygulanacak zaman aşımını genel olarak belirtin.
[Timeout] sınıf başlatma yönteminde belirtilen öznitelik genel zaman aşımını geçersiz kılar. |
| MontajlarıÖzelTestlerOlarakDüşün | yanlış | Visual Studio ve Visual Studio Code AssemblyInitialize ile AssemblyCleanup.trx günlüğünde ClassInitialize, ClassCleanup, Test Explorer, öğelerini tek tek girdiler olarak görüntülemek için bu değeri true olarak ayarlayın. |
| Test Çalışması Tamamlandığında Dağıtım Dizini Silinsin | doğru | Bir test çalıştırmasının ardından dağıtım dizinini korumak için bu değeri false olarak ayarlayın. |
| DağıtımEtkinleştirildi | doğru | Değeri false olarak ayarlarsanız, test yönteminizde belirttiğiniz dağıtım öğeleri dağıtım dizinine kopyalanmamıştır. |
| DeployTestSourceDependencies | doğru | Test kaynağı başvurularının dağıtılıp dağıtılmayacağını gösteren değer. |
| Diğer Derlemelerden Taban Sınıf Test Metotlarını Etkinleştir | doğru | Devralan test sınıfından farklı bir derlemedeki temel sınıflardan test yöntemlerinin bulunup bulunmayacağını belirten bir değer. |
| ForcedLegacyMode | yanlış | Visual Studio'nun eski sürümlerinde, MSTest bağdaştırıcısı daha hızlı ve daha ölçeklenebilir hale getirmek için iyileştirilmiştir. Testlerin çalışma sırası gibi bazı davranışlar Visual Studio'nun önceki sürümlerindekiyle aynı olmayabilir. Eski test bağdaştırıcısını kullanmak için değeri true olarak ayarlayın. Örneğin, birim testi için belirtilen bir app.config dosyanız varsa bu ayarı kullanabilirsiniz. Daha yeni bağdaştırıcı kullanmanıza olanak vermek için testlerinizi yeniden düzenlemenizi öneririz. |
| BelirsizlikleriBaşarısızlıklaEşle | yanlış | Bir test, sonuçsuz bir durumla tamamlanırsa, Test Gezgini'nde atlanan durumla eşlenir. Başarısız testlerin başarısız olarak gösterilmesini istiyorsanız değeri true olarak ayarlayın. |
| ÇalıştırılamayanHaritayıBaşarısızOlarakİşaretle | doğru | Çalıştırılamayan bir sonucun başarısız testle eşlenip eşlenmediğini gösteren değer. |
| Sınıftaki Testleri Ada Göre Sırala | yanlış | Testleri hem Test Gezgini'nde hem de komut satırında test adlarına göre çalıştırmak istiyorsanız, bu değeri true olarak ayarlayın. |
| Paralelleştirme | Paralelleştirme ayarlarını ayarlamak için kullanılır: Çalışanlar: Paralelleştirme için kullanılacak iş parçacığı/çalışan sayısıdır ve varsayılan olarak geçerli makinedeki işlemci sayısıdır. KAPSAM: Paralelleştirmenin kapsamı. Bunu MethodLevel olarak ayarlayabilirsiniz. Varsayılan olarak ClassLevel'dır. <Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize> |
|
| AyarlarDosyası | BURADA MSTest bağdaştırıcısıyla kullanılacak bir test ayarları dosyası belirtebilirsiniz. Ayrıca, ayarlar menüsünden bir test ayarları dosyası belirtebilirsiniz. Bu değeri belirtirseniz, ForcedLegacyMode değerini true olarak ayarlamanız gerekir. <ForcedLegacyMode>true</ForcedLegacyMode> |
|
| TestCleanupTimeout | 0 | Test temizleme yönteminin her örneğine uygulanacak zaman aşımını genel olarak belirtin.
[Timeout] test temizleme yönteminde belirtilen öznitelik genel zaman aşımını geçersiz kılar. |
| TestInitializeTimeout | 0 | Test başlatma yönteminin her örneğine uygulanacak zaman aşımını genel olarak belirtin.
[Timeout] test başlatma yönteminde belirtilen öznitelik genel zaman aşımını geçersiz kılar. |
| TestTimeout | 0 | Belirtilen genel test durumu zaman aşımını alır. |
| SınıfVeBütünleştirilmişMontajTemizlemeUyarılarınıHatalarOlarakEleAl | yanlış | Sınıf temizlemelerindeki hatalarınızı hata olarak görmek için bu değeri true olarak ayarlayın. |
| Keşif Uyarılarını Hatalar Olarak Ele Al | yanlış | Test bulma uyarılarını hata olarak bildirmek için bu değeri true olarak ayarlayın. |
TestRunParameter öğesi
<TestRunParameters>
<Parameter name="webAppUrl" value="http://localhost" />
</TestRunParameters>
Test çalıştırması parametreleri, çalışma zamanında testlerin kullanabileceği değişkenleri ve değerleri tanımlamanın bir yolunu sağlar. MSTest TestContext.Properties özelliğini kullanarak parametrelere erişin:
private string _appUrl;
public TestContext TestContext { get; set; }
[TestMethod]
public void HomePageTest()
{
string _appUrl = TestContext.Properties["webAppUrl"];
}
Test çalıştırması parametrelerini kullanmak için test sınıfınıza bir ortak TestContext özellik ekleyin.
Örnek .runsettings dosyası
Aşağıdaki XML, tipik bir .runsettings dosyasının içeriğini gösterir. Bu kodu kopyalayın ve gereksinimlerinize uyacak şekilde düzenleyin.
Dosyanın her öğesi, varsayılan bir değere sahip olduğundan isteğe bağlıdır.
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Parameters used by tests at runtime -->
<TestRunParameters>
<Parameter name="webAppUrl" value="http://localhost" />
<Parameter name="webAppUserName" value="Admin" />
<Parameter name="webAppPassword" value="Password" />
</TestRunParameters>
<!-- MSTest -->
<MSTest>
<MapInconclusiveToFailed>True</MapInconclusiveToFailed>
<CaptureTraceOutput>false</CaptureTraceOutput>
<DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
<DeploymentEnabled>False</DeploymentEnabled>
<ConsiderFixturesAsSpecialTests>False</ConsiderFixturesAsSpecialTests>
<AssemblyResolution>
<Directory path="D:\myfolder\bin\" includeSubDirectories="false"/>
</AssemblyResolution>
</MSTest>
</RunSettings>
testconfig.json
Testlerinizi MSTest ile çalıştırırken, test çalıştırıcısının davranışını yapılandırmak için bir testconfig.json dosyası kullanabilirsiniz.
testconfig.json dosyası, test çalıştırıcısının yapılandırma ayarlarını içeren bir JSON dosyasıdır. Dosya, test çalıştırıcısını ve test yürütme ortamını yapılandırmak için kullanılır. Daha fazla bilgi için Microsoft.Testing.Platform testconfig.json belgelerine bakın.
MSTest 3.7'den başlayarak, MSTest çalıştırmalarını aynı yapılandırma dosyasında da yapılandırabilirsiniz. Aşağıdaki bölümlerde, testconfig.json dosyasında kullanabileceğiniz ayarlar açıklanmaktadır.
MSTest öğesi
MSTest ayarları, izleyen bölümlerde açıklanan işlevlere göre gruplandırılır.
| Giriş | Varsayılan | Açıklama |
|---|---|---|
| SınıftaTestleriAdaGöreSırala | yanlış | Testleri hem Test Gezgini'nde hem de komut satırında test adlarına göre çalıştırmak istiyorsanız, bu değeri true olarak ayarlayın. |
| Diğer Derlemelerden Taban Sınıf Test Metotlarını Etkinleştir | doğru | Devralan test sınıfından farklı bir derlemedeki temel sınıflardan test yöntemlerinin bulunup bulunmayacağını belirten bir değer. |
| classCleanupLifecycle | Montajın Sonu | Sınıf temizleme işleminin sınıfın sonunda gerçekleşmesini istiyorsanız, bunu EndOfClass olarak ayarlayın. |
assemblyResolution ayarları
Bu bölümdeki tüm ayarlar assemblyResolution öğesine aittir.
| Giriş | Varsayılan | Açıklama |
|---|---|---|
| Yollar | Hiç kimse | Birim testlerini bulup çalıştırırken ek montajların yollarını belirleyebilirsiniz. Örneğin, test derlemesi ile aynı dizinde olmayan bağımlılık derlemeleri için bu yolları kullanın.
{ "path": "...", "includeSubDirectories": "true/false" }şekilde bir yol belirtebilirsiniz. |
Örnek:
{
"mstest": {
"assemblyResolution": {
{ "path": "...", "includeSubDirectories": "true/false" }
}
}
}
deployment ayarları
Bu bölümdeki tüm ayarlar deployment öğesine aittir.
| Giriş | Varsayılan | Açıklama |
|---|---|---|
| TestÇalışmasıTamamlandığındaDağıtımDizininiSil | doğru | Bir test çalıştırmasının ardından dağıtım dizinini korumak için bu değeri false olarak ayarlayın. |
| TestKaynakBağımlılıklarınıYükle | doğru | Test kaynağı referanslarının dağıtılıp dağıtılmayacağını belirtir. |
| Aktif | doğru | Değeri false olarak ayarlarsanız, test yönteminizde belirttiğiniz dağıtım öğeleri dağıtım dizinine kopyalanmamıştır. |
Örnek:
{
"mstest": {
"deployment": {
"deleteDeploymentDirectoryAfterTestRunIsComplete": true,
"deployTestSourceDependencies": true,
"enabled": true
}
}
}
output ayarları
Bu bölümdeki tüm ayarlar output öğesine aittir.
| Giriş | Varsayılan | Açıklama |
|---|---|---|
| captureTrace | doğru | Çalışmakta olan teste ilişkilendirilecek, Console.Write*, Trace.Write* ve Debug.Write* API'lerinden gelen kısa mesajları yakalayın. |
Örnek:
{
"mstest": {
"output": {
"captureTrace": false
}
}
}
parallelism ayarları
Bu bölümdeki tüm ayarlar parallelism öğesine aittir.
| Giriş | Varsayılan | Açıklama |
|---|---|---|
| Aktif | yanlış | Test paralelleştirmesini etkinleştirin. |
| kapsam | sınıf | Paralelleştirmenin kapsamı.
methodolarak ayarlayabilirsiniz. varsayılan class, belirli bir sınıfın tüm testlerini sırayla ancak birden çok sınıfın paralel olarak çalıştırılmasına karşılık gelir. |
| Işçi | 0 | Paralelizasyon için kullanılacak iş parçacığı/çalışan sayısı. Varsayılan değer, geçerli makinedeki işlemci sayısına karşılık gelir. |
Örnek:
{
"mstest": {
"parallelism": {
"enabled": true,
"scope": "method",
"workers": 32
}
}
}
execution ayarları
Bu bölümdeki tüm ayarlar execution öğesine aittir.
| Giriş | Varsayılan | Açıklama |
|---|---|---|
| BoşVeriKaynağınıSonuçsuzKabulEt | yanlış |
trueolarak ayarlandığında, boş bir veri kaynağı yetersiz olarak kabul edilir. |
| fikstürleriÖzelTestlerOlarakDüşün | yanlış |
AssemblyInitialize, AssemblyCleanup, ClassInitializeve ClassCleanup 'ü Visual Studio ve Visual Studio Code Test Explorer ve .trx günlüğünde tek tek girdiler olarak görüntülemek için, bu değeri trueolarak ayarlayın. |
| BelirsizSonucuBaşarısızOlarakEşle | yanlış | Bir test, sonuçsuz bir durumla tamamlanırsa, Test Gezgini'nde atlanan durumla eşlenir. Başarısız testlerin başarısız olarak gösterilmesini istiyorsanız değeri true olarak ayarlayın. |
| ÇalıştırılamayanHaritayıBaşarısızaÇevir | doğru | Çalıştırılamayan bir sonucun başarısız testle eşlenip eşlenmediğini gösteren değer. |
| Sınıf ve Bütünleştirilmiş Yapı Temizleme Uyarılarını Hatalar Olarak İşle | yanlış | Sınıf temizlemelerindeki hatalarınızı hata olarak görmek için bu değeri true olarak ayarlayın. |
| Keşif Uyarılarını Hatalar Olarak Ele Al | yanlış | Test bulma uyarılarını hata olarak bildirmek için bu değeri true olarak ayarlayın. |
Örnek:
{
"mstest": {
"execution": {
"considerEmptyDataSourceAsInconclusive": false,
"considerFixturesAsSpecialTests": false,
"mapInconclusiveToFailed": true,
"mapNotRunnableToFailed": true,
"treatClassAndAssemblyCleanupWarningsAsErrors": false,
"treatDiscoveryWarningsAsErrors": false
}
}
}
timeout ayarları
Bu bölümdeki tüm ayarlar timeout öğesine aittir.
| Giriş | Varsayılan | Açıklama |
|---|---|---|
| montaj temizliği | 0 | Her bir montaj temizleme yöntemi örneğine uygulanacak zaman aşımını genel olarak belirtin. |
| bütünleştirmeBaşlat | 0 | Derleme başlatma yönteminin her örneğine uygulanacak zaman aşımını genel olarak belirtin. |
| sınıfTemizle | 0 | Sınıf temizleme yönteminin her örneğine uygulanacak zaman aşımını genel olarak belirtin. |
| sınıfBaşlat | 0 | Sınıf başlatma yönteminin her örneğine uygulanacak zaman aşımını genel olarak belirtin. |
| deneme | 0 | Genel olarak test zaman aşımını belirtin. |
| testCleanup | 0 | Test temizleme yönteminin her örneğine uygulanacak zaman aşımını genel olarak belirtin. |
| testInitialize | 0 | Test başlatma yönteminin her örneğine uygulanacak zaman aşımını genel olarak belirtin. |
| useKooperatifİptal | yanlış |
trueolarak ayarlandığında, zaman aşımı durumunda MSTest yalnızca CancellationToken iptalini tetikler ancak yöntemi gözlemlemeyi durdurmaz. Bu davranış daha yüksek performanslıdır, ancak belirteci doğru bir şekilde tüm yollar boyunca iletmek için kullanıcıya dayanır. |
Not
Bir yöntemde belirtilen [Timeout] özniteliği genel zaman aşımını geçersiz kılar. Örneğin, [AssemblyCleanup] ile işaretlenmiş bir yöntemdeki [Timeout(1000)] genel assemblyCleanup zaman aşımını geçersiz kılar.
Örnek:
{
"mstest": {
"timeout": {
"assemblyCleanup": 0,
"assemblyInitialize": 0,
"classCleanup": 0,
"classInitialize": 0,
"test": 0,
"testCleanup": 0,
"testInitialize": 0,
"useCooperativeCancellation": false
}
}
}
Örnek testconfig.json dosyası
Aşağıdaki JSON, tipik bir .testconfig.json dosyasının içeriğini gösterir. Bu kodu kopyalayın ve gereksinimlerinize uyacak şekilde düzenleyin.
Dosyanın her öğesi, varsayılan bir değere sahip olduğundan isteğe bağlıdır.
{
"platformOptions": {
},
"mstest": {
"execution": {
"mapInconclusiveToFailed" : true,
"disableAppDomain": true,
"considerFixturesAsSpecialTests" : false,
},
"parallelism" : {
"enabled": true,
"scope": "method",
},
"output": {
"captureTrace": false
}
}
}