Share via


.runsettings dosyası kullanarak birim testlerini yapılandırma

Birim testlerinin nasıl çalıştırıldığını yapılandırmak için bir .runsettings dosyası kullanılabilir. Örneğin, testlerin çalıştırıldığı .NET sürümünü, test sonuçlarının dizinini veya bir test çalıştırması sırasında toplanan verileri değiştirmek için kullanılabilir. .runsettings dosyasının yaygın kullanımlarından biri, kod kapsamı analizini özelleştirmektir.

Runsettings dosyaları, komut satırından, IDE'den veya Azure Test Planları veya Azure DevOps Server (eski adıyla Team Foundation Server (TFS) kullanılarak bir derleme iş akışında çalıştırılan testleri yapılandırmak için kullanılabilir.

Runsettings dosyaları isteğe bağlıdır. Özel bir yapılandırmaya ihtiyacınız yoksa bir .runsettings dosyasına ihtiyacınız yoktur.

Çalıştırma ayarları dosyası oluşturma ve özelleştirme

  1. Çözümünüze bir çalıştırma ayarları dosyası ekleyin. Çözüm Gezgini'da, çözümünüzün kısayol menüsünde Yeni Öğe Ekle'yi>ve ardından XML Dosyası'nı seçin. Dosyayı test.runsettings gibi bir adla kaydedin.

    Tüm öğe şablonlarını görmüyorsanız, Tüm Şablonları Göster'i ve ardından öğe şablonunu seçin.

    İpucu

    .runsettings uzantısını kullandığınız sürece dosya adı önemli değildir.

  2. Örnek *.runsettings dosyasındaki içeriği ekleyin ve ardından izleyen bölümlerde açıklandığı gibi gereksinimlerinize göre özelleştirin.

  3. Aşağıdaki yöntemlerden birini kullanarak istediğiniz *.runsettings dosyasını belirtin:

  4. Özel çalıştırma ayarlarını kullanmak için birim testlerini çalıştırın.

IDE'de özel ayarları kapatmak ve açmak istiyorsanız, Test menüsünde dosyanın seçimini kaldırın veya seçin.

İpucu

Çözümünüzde birden fazla .runsettings dosyası oluşturabilir ve gerektiğinde etkin test ayarları dosyası olarak birini seçebilirsiniz.

IDE'de bir çalıştırma ayarları dosyası belirtme

Kullanılabilir yöntemler, Visual Studio sürümünüze bağlıdır.

Visual Studio 2019 sürüm 16.4 ve üzeri

Visual Studio 2019 sürüm 16.4 ve sonraki sürümlerde bir çalıştırma ayarları dosyası belirtmenin üç yolu vardır.

Çalıştırma ayarları dosyasını otomatik olarak algıla

Not

Bu yalnızca adlı .runsettingsbir dosya için çalışır.

Çalıştırma ayarları dosyasını otomatik olarak algılamak için çözümünüzün köküne yerleştirin.

Çalıştırma ayarları dosyalarının otomatik algılanması etkinleştirilirse, bu dosyadaki ayarlar tüm test çalıştırmalarında uygulanır. Runsettings dosyalarını otomatik algılamayı iki yöntem kullanarak açabilirsiniz:

  • Araçlar>Seçenekler>Test>Otomatik Algılama runsettings Dosyaları'nı seçin

    Visual Studio'da runsettings dosyasını otomatik algılama seçeneği

  • Test>Çalıştırmayı Yapılandır Ayarlar> Ayarları AlgılamaKlastırma Dosyalarını Seçin

    Visual Studio'da runsettings dosyasını otomatik algılama menüsü

Çalıştırma ayarları dosyasını el ile seçin

IDE'de Test >Çalıştırmayı Yapılandır Ayarlar> Select Solution Wide runsettings File öğesini seçin ve ardından .runsettings dosyasını seçin.

  • Bu dosya, varsa çözümün kökündeki .runsettings dosyasını geçersiz kılar ve tüm test çalıştırmalarına uygulanır.
  • Bu dosya seçimi yalnızca yerel olarak kalıcı olur.

Visual Studio'da çözüm genelinde test çözümü runsettings dosya menüsünü seçin

Derleme özelliği ayarlama

Proje dosyası veya Directory.Build.props dosyası aracılığıyla projeye derleme özelliği ekleyin. Bir projenin çalıştırma ayarları dosyası Run Ayarlar FilePath özelliği tarafından belirtilir.

  • Proje düzeyinde çalıştırma ayarları şu anda C#, VB, C++ve F# projelerinde desteklenmektedir.
  • Proje için belirtilen bir dosya, çözümde belirtilen diğer çalıştırma ayarları dosyalarını geçersiz kılar.
  • Bu MSBuild özellikleri runsettings dosyasının yolunu belirtmek için kullanılabilir.

Proje için .runsettings dosyası belirtme örneği:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <RunSettingsFilePath>$(MSBuildProjectDirectory)\example.runsettings</RunSettingsFilePath>
  </PropertyGroup>
  ...
</Project>

Visual Studio 2019 sürüm 16.3 ve öncesi

IDE'de bir çalıştırma ayarları dosyası belirtmek için Test>Seçme Ayarlar Dosyası'nı seçin. .runsettings dosyasına gidin ve dosyayı seçin.

Visual Studio 2019'da test ayarları dosya menüsünü seçme

Dosya Test menüsünde görünür ve dosyayı seçebilir veya seçimini kaldırabilirsiniz. Seçili durumdayken, Kod Kapsamını Çözümle'yi seçtiğinizde çalıştırma ayarları dosyası uygulanır.

Komut satırından bir çalıştırma ayarları dosyası belirtin

Testleri komut satırından çalıştırmak için vstest.console.exe kullanın ve /Ayarlar parametresini kullanarak ayarlar dosyasını belirtin.

  1. Visual Studio için Geliştirici Komut İstemi'ni açın.

  2. Şuna benzer bir komut girin:

    vstest.console.exe MyTestAssembly.dll /EnableCodeCoverage /Settings:CodeCoverage.runsettings
    

    veya

    vstest.console.exe --settings:test.runsettings test.dll
    

Daha fazla bilgi için bkz . VSTest.Console.exe komut satırı seçenekleri.

*.runsettings dosyası

*.runsettings dosyası, Run Ayarlar öğesinde farklı yapılandırma öğeleri içeren bir XML dosyasıdır. İzleyen bölümler farklı öğeleri ayrıntılı olarak açıklar. Tam örnek için bkz . Örnek *.runsettings dosyası.

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!-- configuration elements -->
</RunSettings>

Varsayılan değere sahip olduğundan yapılandırma öğelerinin her biri isteğe bağlıdır.

RunConfiguration öğesi

<RunConfiguration>
    <MaxCpuCount>1</MaxCpuCount>
    <ResultsDirectory>.\TestResults</ResultsDirectory>
    <TargetPlatform>x86</TargetPlatform>
    <TargetFrameworkVersion>net6.0</TargetFrameworkVersion>
    <TestAdaptersPaths>%SystemDrive%\Temp\foo;%SystemDrive%\Temp\bar</TestAdaptersPaths>
    <TestCaseFilter>(TestCategory != Integration) &amp; (TestCategory != UnfinishedFeature)</TestCaseFilter>
    <TestSessionTimeout>10000</TestSessionTimeout>
    <TreatNoTestsAsError>true</TreatNoTestsAsError>
</RunConfiguration>

RunConfiguration öğesi aşağıdaki öğeleri içerebilir:

Düğüm Varsayılan Değerler
MaxCpuCount 1 Seçenek adı büyük/küçük harfe duyarlıdır ve MaxCPUCount olarak kolayca yanlış anlaşılır.

Bu ayar, işlem düzeyinde paralellik düzeyini denetler. İşlem düzeyinde paralellik üst sınırını etkinleştirmek için 0 kullanın.

Bu ayar, test DLL'lerinin veya paralel olarak çalışabilen diğer test kapsayıcılarının maksimum sayısını belirler. Her DLL kendi testhost işleminde çalışır ve diğer test DLL'lerindeki testlerden işlem düzeyinde yalıtılır. Bu ayar, her test DLL'sindeki testleri paralel çalışmaya zorlamaz. BIR DLL içinde (iş parçacığı düzeyinde) paralel yürütmeyi denetlemek MSTest, XUnit veya NUnit gibi test çerçevesine bağlıdır.

Varsayılan değer, 1aynı anda yalnızca bir testhost'un çalıştığı anlamına gelir. Özel bir değer 0 , mantıksal işlemcileriniz olduğu kadar çok sayıda test konasına izin verir (örneğin, çok iş parçacıklı altı fiziksel çekirdeği olan bir bilgisayar için 6 fiziksel çekirdeği olmayan bir bilgisayar için 6 veya çok iş parçacıklı altı fiziksel çekirdeği olan bir bilgisayar için 12).

Çalıştırmadaki ayrı DLL sayısı, başlatılan test konaklarının gerçek sayısını belirler.
ResultsDirectory Test sonuçlarının yerleştirildiği dizin. Yol, .runsettings dosyasını içeren dizine göredir.
TargetFrameworkVersion net40 veya netcoreapp1.0 Otomatik algılama için bu etiketin tamamını atlayın.

Bu ayar, testleri çalıştırmak için kullanılacak çerçeve sürümünü veya çerçeve ailesini tanımlar.

Kabul edilen değerler, , , net5.0uap10.0net6.0netcoreapp3.1net472gibi net48herhangi bir çerçeve adı veya veya gibi.NETFramework,Version=v4.7.2.NETCoreApp,Version=v6.0.0geçerli bir tam çerçeve adıdır. Geriye dönük uyumluluk Framework35için , Framework40, Framework45, , FrameworkCore10FrameworkUap10 kabul edilir, yani (net35sırasıyla, net40, net45netcoreapp1.0 veuap10.0). Tüm değerler büyük/küçük harfe duyarlı değildir.

Sağlanan değer, kullanılacak test çalışma zamanı sağlayıcısını belirlemek için kullanılır. Her test çalışma zamanı sağlayıcısının kullanılacak çerçeve ailesine saygı duyması gerekir, ancak tam çerçeve sürümüne saygı duymayabilir:

.NET Framework 4.5.1 - 4.8 için, belirtilen tam sürümle oluşturulmuş bir testhost kullanılır. Bu aralığın dışındaki değerler için .NET Framework 4.5.1 testhost kullanılır.

.NET için, gerçek sürümü test projesinin <TargetFramework> (veya daha kesin olarak runtimeconfig.json) belirler.

UWP için test projesi uygulaması kendi başına bir testhost'dur ve kullanılan gerçek UWP sürümünü belirler.

Yerleşik ikili dosyalardan çerçeve sürümünü otomatik olarak belirlemek için .runsettings dosyasındaki öğesini atlarTargetFrameworkVersion.

Otomatik algılama sırasında tüm hedef çerçeveler tek bir ortak çerçevede birleştirilir. Aynı hedef çerçeve ailesinden farklı bir sürüm bulunduğunda, daha yeni sürüm seçilir (örneğin, net452, net472, net48 = net48).

.NET Framework çalıştırıcısı için (Visual Studio'da veya Geliştirici komut satırında vstest.console.exe) ortak hedef çerçeve net40'tır. .NET çalıştırıcısı için (dotnet testi + DLL'ler), ortak hedef çerçeve netcoreapp1.0 olarak ayarlanır.
Targetplatform x86 Otomatik algılama için bu etiketin tamamını atlayın.

Bu ayar, testleri çalıştırmak için kullanılacak mimariyi tanımlar. Olası değerler : x86, x64, ARM, ARM64, S390x.

Otomatik algılama sırasında AnyCPU DLL'lerinin mimarisi çalıştırıcıya göre farklılık gösterebilir. .NET Framework çalıştırıcısı için (Visual Studio'da veya Geliştirici komut satırında vstest.console.exe), varsayılan değer x86'dır. .NET çalıştırıcısı (dotnet testi) için varsayılan, geçerli işlem mimarisidir.

TreatTestAdapterErrorsAsWarnings yanlış yanlış, doğru
TestAdaptersPaths TestAdapters'ın bulunduğu dizinin bir veya daha fazla yolu
TestCaseFilter Biçim <özelliği><işleci><değerindeki> bir filtre ifadesi[|&<İfade>]. Boole işleci &HTML varlığıyla gösterilmelidir. İfadeler parantez içine alınabilir. İfade yapısı hakkında ayrıntılı söz dizimi için bkz . vstest/docs/filter.md.
TestSessionTimeout Kullanıcıların belirli bir zaman aşımını aştığında test oturumlarını sonlandırmasına izin verir. Zaman aşımının ayarlanması, kaynakların iyi tüketilmesini ve test oturumlarının belirli bir süreyle kısıtlanmasını sağlar. Bu ayar Visual Studio 2017 sürüm 15.5 ve sonraki sürümlerde kullanılabilir.
DotnetHostPath testhost'u çalıştırmak için kullanılan dotnet konağı için özel bir yol belirtin. Kendi dotnet'inizi oluştururken, örneğin dotnet/runtime deposunu oluştururken kullanışlıdır. Bu seçeneğin belirtilmesi testhost.exe aramayı atlar ve testhost.dll kullanımını zorlar.
TreatNoTestsAsError yanlış true veya false
Hiçbir test bulunadığında çıkış kodunu tanımlayan bir Boole değeri belirtin. Değer ise true ve hiçbir test bulunamıyorsa sıfır olmayan bir çıkış kodu döndürülür. Aksi takdirde sıfır döndürülür.

DataCollectors öğesi (tanılama veri bağdaştırıcıları)

DataCollectors öğesi, tanılama veri bağdaştırıcılarının ayarlarını belirtir. Tanılama veri bağdaştırıcıları, test edilen ortam ve uygulama hakkında ek bilgi toplar. Her bağdaştırıcının varsayılan ayarları vardır ve yalnızca varsayılan ayarları kullanmak istemiyorsanız ayarları sağlamanız gerekir.

<DataCollectionRunSettings>
  <DataCollectors>
    <!-- data collectors -->
  </DataCollectors>
</DataCollectionRunSettings>

CodeCoverage veri toplayıcısı

Kod kapsamı veri toplayıcısı uygulama kodu bölümlerinin testte uygulandığı bir günlük oluşturur. Kod kapsamı ayarlarını özelleştirme hakkında ayrıntılı bilgi için bkz . Kod kapsamı analizini özelleştirme.

<DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
  <Configuration>
    <CodeCoverage>
      <ModulePaths>
        <Exclude>
          <ModulePath>.*CPPUnitTestFramework.*</ModulePath>
        </Exclude>
      </ModulePaths>

      <UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
      <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
      <CollectFromChildProcesses>True</CollectFromChildProcesses>
      <CollectAspDotNet>False</CollectAspDotNet>
    </CodeCoverage>
  </Configuration>
</DataCollector>

VideoKayıt veri toplayıcısı

Testler çalıştırıldığında video veri toplayıcısı bir ekran kaydı yakalar. Bu kayıt, kullanıcı arabirimi testlerinin sorunlarını gidermek için kullanışlıdır. Video veri toplayıcısı Visual Studio 2017 sürüm 15.5 ve sonraki sürümlerde kullanılabilir. Bu veri toplayıcıyı yapılandırma örneği için Örnek *.runsettings dosyasına bakın.

Diğer tanılama veri bağdaştırıcıları türünü özelleştirmek için bir test ayarları dosyası kullanın.

Veri toplayıcıyı suçlama

Bu seçenek, test konağı kilitlenmesine neden olan sorunlu bir testi yalıtmanıza yardımcı olabilir. Toplayıcıyı çalıştırmak, TestResults'ta kilitlenmeden önce testin yürütme sırasını yakalayan bir çıkış dosyası (Sequence.xml) oluşturur.

Suçlamayı üç farklı modda çalıştırabilirsiniz:

  • Sıralı dosya modu: Askıda kalma testlerinin listesini içeren bir dosya oluşturmak için
  • Kilitlenme bilgi dökümü modu: testhost kilitlendiğinde döküm oluşturmak için
  • Kilitlenme bilgi dökümü modu: Verilen zaman aşımı öncesinde test tamamlanmadığında döküm oluşturmak için

XML yapılandırması doğrudan düğüme <RunSettings> yerleştirilmelidir:

<RunSettings>
  <RunConfiguration>
  </RunConfiguration>
  <LoggerRunSettings>
    <Loggers>
      <Logger friendlyName="blame" enabled="True" />
    </Loggers>
  </LoggerRunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <!-- Enables blame -->
      <DataCollector friendlyName="blame" enabled="True">
        <Configuration>
          <!-- Enables crash dump, with dump type "Full" or "Mini".
          Requires ProcDump in PATH for .NET Framework. -->
          <CollectDump DumpType="Full" />
          <!-- Enables hang dump or testhost and its child processes 
          when a test hangs for more than 10 minutes. 
          Dump type "Full", "Mini" or "None" (just kill the processes). -->
          <CollectDumpOnTestSessionHang TestTimeout="10min" HangDumpType="Full" />
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

TestRunParameters

<TestRunParameters>
    <Parameter name="webAppUrl" value="http://localhost" />
    <Parameter name="docsUrl" value="https://learn.microsoft.com" />
</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 (veya NUnit TestContext'i) kullanarak parametrelere erişin:

private string _appUrl;
public TestContext TestContext { get; set; }

[TestMethod] // [Test] for NUnit
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.

LoggerRun Ayarlar öğesi

bölümü, LoggerRunSettings test çalıştırması için kullanılacak bir veya daha fazla günlükçü tanımlar. En yaygın günlüğe kaydedenler konsol, Visual Studio Test Sonuçları Dosyası (trx) ve html'dir.

<LoggerRunSettings>
    <Loggers>
      <Logger friendlyName="console" enabled="True">
        <Configuration>
            <Verbosity>quiet</Verbosity>
        </Configuration>
      </Logger>
      <Logger friendlyName="trx" enabled="True">
        <Configuration>
          <LogFileName>foo.trx</LogFileName>
        </Configuration>
      </Logger>
      <Logger friendlyName="html" enabled="True">
        <Configuration>
          <LogFileName>foo.html</LogFileName>
        </Configuration>
      </Logger>
    </Loggers>
  </LoggerRunSettings>

MSTest öğesi

Bu ayarlar, özniteliğine sahip test yöntemlerini çalıştıran test bağdaştırıcısına özeldir TestMethodAttribute .

<MSTest>
    <MapInconclusiveToFailed>True</MapInconclusiveToFailed>
    <CaptureTraceOutput>false</CaptureTraceOutput>
    <DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
    <DeploymentEnabled>False</DeploymentEnabled>
    <AssemblyResolution>
      <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/>
    </AssemblyResolution>
</MSTest>
Yapılandırma Varsayılan Değerler
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.
Ayarlar File 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>
DeploymentEnabled true Değeri false olarak ayarlarsanız, test yönteminizde belirttiğiniz dağıtım öğeleri dağıtım dizinine kopyalanmamıştır.
CaptureTraceOutput true Geçerli çalışan testle ilişkilendirilecek , Trace.Write*, Debug.Write* api'sinden Console.Write*gelen kısa mesajları yakalayın.
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.
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ışı)
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>
Testtimeout 0 Belirtilen genel test çalışması zaman aşımını alır.
TreatDiscoveryWarningsAsErrors yanlış Test bulma uyarılarını hata olarak bildirmek için bu değeri true olarak ayarlayın.
TreatClassAndAssemblyCleanupWarningsAsErrors yanlış Sınıf temizlemelerindeki hatalarınızı hata olarak görmek için bu değeri true olarak ayarlayın.
DeployTestSourceDependencies true Test kaynağı başvurularının dağıtılıp dağıtılmayacağını gösteren değer.
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.
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.
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 özelliğin yalnızca .NET Framework hedefi kullanılırken uygulandığını unutmayın.

Ö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>
  <!-- Configurations that affect the Test Framework -->
  <RunConfiguration>
    <!-- Use 0 for maximum process-level parallelization. This does not force parallelization within the test DLL (on the thread-level). You can also change it from the Test menu; choose "Run tests in parallel". Unchecked = 1 (only 1), checked = 0 (max). -->
    <MaxCpuCount>1</MaxCpuCount>
    <!-- Path relative to directory that contains .runsettings file-->
    <ResultsDirectory>.\TestResults</ResultsDirectory>

    <!-- Omit the whole tag for auto-detection. -->
    <!-- [x86] or x64, ARM, ARM64, s390x  -->
    <!-- You can also change it from the Test menu; choose "Processor Architecture for AnyCPU Projects" -->
    <TargetPlatform>x86</TargetPlatform>

    <!-- Any TargetFramework moniker or omit the whole tag for auto-detection. -->
    <!-- net48, [net40], net6.0, net5.0, netcoreapp3.1, uap10.0 etc. -->
    <TargetFrameworkVersion>net40</TargetFrameworkVersion>

    <!-- Path to Test Adapters -->
    <TestAdaptersPaths>%SystemDrive%\Temp\foo;%SystemDrive%\Temp\bar</TestAdaptersPaths>

    <!-- TestCaseFilter expression -->
    <TestCaseFilter>(TestCategory != Integration) &amp; (TestCategory != UnfinishedFeature)</TestCaseFilter>

    <!-- TestSessionTimeout was introduced in Visual Studio 2017 version 15.5 -->
    <!-- Specify timeout in milliseconds. A valid value should be greater than 0 -->
    <TestSessionTimeout>10000</TestSessionTimeout>

    <!-- true or false -->
    <!-- Value that specifies the exit code when no tests are discovered -->
    <TreatNoTestsAsError>true</TreatNoTestsAsError>
  </RunConfiguration>

  <!-- Configurations for data collectors -->
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
        <Configuration>
          <CodeCoverage>
            <ModulePaths>
              <Exclude>
                <ModulePath>.*CPPUnitTestFramework.*</ModulePath>
              </Exclude>
            </ModulePaths>

            <!-- We recommend you do not change the following values: -->
            <UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
            <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
            <CollectFromChildProcesses>True</CollectFromChildProcesses>
            <CollectAspDotNet>False</CollectAspDotNet>

          </CodeCoverage>
        </Configuration>
      </DataCollector>

      <DataCollector uri="datacollector://microsoft/VideoRecorder/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TestTools.DataCollection.VideoRecorder.VideoRecorderDataCollector, Microsoft.VisualStudio.TestTools.DataCollection.VideoRecorder, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="Screen and Voice Recorder">
        <!--Video data collector was introduced in Visual Studio 2017 version 15.5 -->
        <Configuration>
          <!-- Set "sendRecordedMediaForPassedTestCase" to "false" to add video attachments to failed tests only -->
          <MediaRecorder sendRecordedMediaForPassedTestCase="true"  xmlns="">           ​
            <ScreenCaptureVideo bitRate="512" frameRate="2" quality="20" />​
          </MediaRecorder>​
        </Configuration>
      </DataCollector>

      <!-- Configuration for blame data collector -->
      <DataCollector friendlyName="blame" enabled="True">
      </DataCollector>

    </DataCollectors>
  </DataCollectionRunSettings>

  <!-- 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>

  <!-- Configuration for loggers -->
  <LoggerRunSettings>
    <Loggers>
      <Logger friendlyName="console" enabled="True">
        <Configuration>
            <Verbosity>quiet</Verbosity>
        </Configuration>
      </Logger>
      <Logger friendlyName="trx" enabled="True">
        <Configuration>
          <LogFileName>foo.trx</LogFileName>
        </Configuration>
      </Logger>
      <Logger friendlyName="html" enabled="True">
        <Configuration>
          <LogFileName>foo.html</LogFileName>
        </Configuration>
      </Logger>
      <Logger friendlyName="blame" enabled="True" />
    </Loggers>
  </LoggerRunSettings>

  <!-- Adapter Specific sections -->

  <!-- MSTest adapter -->
  <MSTest>
    <MapInconclusiveToFailed>True</MapInconclusiveToFailed>
    <CaptureTraceOutput>false</CaptureTraceOutput>
    <DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
    <DeploymentEnabled>False</DeploymentEnabled>
    <AssemblyResolution>
      <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/>
    </AssemblyResolution>
  </MSTest>

</RunSettings>

.runsettings dosyasında ortam değişkenlerini belirtme

Ortam değişkenleri test konağıyla doğrudan etkileşim kurabilen .runsettings dosyasında ayarlanabilir. .runsettings dosyasında ortam değişkenlerini belirtmek, DOTNET_ROOT gibi ortam değişkenlerini ayarlamayı gerektiren özel olmayan projeleri desteklemek için gereklidir. Bu değişkenler test konağı işlemi oluşturulurken ayarlanır ve konakta kullanılabilir.

Örnek

Aşağıdaki kod, ortam değişkenlerini geçiren örnek bir .runsettings dosyasıdır:

<?xml version="1.0" encoding="utf-8"?>
<!-- File name extension must be .runsettings -->
<RunSettings>
  <RunConfiguration>
    <EnvironmentVariables>
      <!-- List of environment variables we want to set-->
      <DOTNET_ROOT>C:\ProgramFiles\dotnet</DOTNET_ROOT>
      <SDK_PATH>C:\Codebase\Sdk</SDK_PATH>
    </EnvironmentVariables>
  </RunConfiguration>
</RunSettings>

RunConfiguration düğümü bir EnvironmentVariables düğümü içermelidir. Ortam değişkeni bir öğe adı ve değeri olarak belirtilebilir.

Not

Test konağı başlatıldığında bu ortam değişkenleri her zaman ayarlanacağından, testler her zaman ayrı bir işlemde çalıştırılmalıdır. Bunun için ortam değişkenleri olduğunda test konağı her zaman çağrılacak şekilde /InIsolation bayrağı ayarlanır.