Aracılığıyla paylaş


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 AssemblyInitializeiçin bu değeri true olarak ayarlayın ClassCleanup ClassInitializeAssemblyCleanup

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>