MSTest'i yapılandırma
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 |
---|---|---|
AssemblyCleanupTimeout | 0 | Derleme temizleme yönteminin her ö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 derlemelerin yollarını belirtebilirsiniz. Ö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 | true | Geçerli çalışan testle Console.Write* ilişkilendirilecek , 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. (EndOfClass varsayılan ve yalnızca MSTest v4'ten başlayarak artık desteklenmiyorClassCleanup davranışı) |
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. |
DeleteDeploymentDirectoryAfterTestRunIsComplete | true | Bir test çalıştırmasının ardından dağıtım dizinini korumak için bu değeri false olarak ayarlayın. |
DeploymentEnabled | true | Değeri false olarak ayarlarsanız, test yönteminizde belirttiğiniz dağıtım öğeleri dağıtım dizinine kopyalanmamıştır. |
DeployTestSourceDependencies | true | Test kaynağı başvurularının dağıtılıp dağıtılmayacağını gösteren değer. |
EnableBaseClassTestMethodsFromOtherAssemblies | true | 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. |
MapInconclusiveToFailed | 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. |
MapNotRunnableToFailed | true | Çalıştırılamayan bir sonucun başarısız testle eşlenip eşlenmediğini gösteren değer. |
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 de 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 çalışması zaman aşımını alır. |
TreatClassAndAssemblyCleanupWarningsAsErrors | yanlış | Sınıf temizlemelerindeki hatalarınızı hata olarak görmek için bu değeri true olarak ayarlayın. |
TreatDiscoveryWarningsAsErrors | yanlış | Test bulma uyarılarını hata olarak bildirmek için bu değeri true olarak ayarlayın. |
ConsiderFixturesAsSpecialTests | yanlış | , , , öğesini Visual Studio ve Visual Studio Code Test Explorer ile .trx günlüğünde tek tek girdiler olarak görüntülemek AssemblyInitialize için bu değeri true olarak ayarlayın ClassCleanup ClassInitialize AssemblyCleanup |
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 run time -->
<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>