Sdílet prostřednictvím


Konfigurace testů jednotek pomocí souboru .runsettings

Soubor .runsettings lze použít ke konfiguraci způsobu spouštění testů jednotek. Dá se například použít ke změně verze .NET, na které se testy spouští, adresář výsledků testů nebo k datům shromážděným během testovacího běhu. Běžným použitím souboru .runsettings je přizpůsobení analýzy pokrytí kódu.

Soubory runsettings je možné použít ke konfiguraci testů, které se spouští z příkazového řádku , z integrovaného vývojového prostředí nebo pracovního postupu sestavení pomocí azure Test Plans nebo Azure DevOps Serveru (dříve označovaného jako Team Foundation Server (TFS).

Soubory Runsettings jsou volitelné. Pokud nevyžadujete žádnou speciální konfiguraci, nepotřebujete soubor .runsettings.

Vytvoření souboru nastavení spuštění a jeho přizpůsobení

  1. Přidejte do svého řešení soubor nastavení spuštění. V Průzkumník řešenív místní nabídce řešení zvolte Přidat>Nová položkaa vyberte SOUBOR XML. Uložte soubor s názvem, například test.runsettings.

    Pokud nevidíte všechny šablony položek, zvolte Zobrazit všechny šablonya pak zvolte šablonu položky.

    Spropitné

    Název souboru nezáleží, pokud použijete příponu .runsettings.

  2. Přidejte obsah ze souboru Example *.runsettingsa upravte ho podle pokynů v následujících částech.

  3. Pomocí jedné z následujících metod zadejte soubor *.runsettings, který chcete použít:

  4. Spusťte testy jednotek, abyste použili vlastní nastavení spuštění.

Pokud chcete vlastní nastavení vypnout a zapnout v integrovaném vývojovém prostředí, zrušte výběr nebo vyberte soubor v nabídce Test.

Spropitné

Ve vašem řešení můžete vytvořit více než jeden soubor .runsettings a podle potřeby vybrat jeden jako aktivní soubor nastavení testu.

Zadání souboru nastavení spuštění v integrovaném vývojovém prostředí (IDE)

Dostupné metody závisí na vaší verzi sady Visual Studio.

Visual Studio 2019 verze 16.4 a novější

Existují tři způsoby určení souboru nastavení spuštění v sadě Visual Studio 2019 verze 16.4 a novější.

Automatické rozpoznávání souboru nastavení spuštění

Poznámka

To bude fungovat pouze pro soubor s názvem .runsettings.

Pokud chcete automaticky zjistit soubor nastavení spuštění, umístěte ho do kořenového adresáře vašeho řešení.

Pokud je zapnutá automatická detekce souborů nastavení spuštění, použijí se nastavení v tomto souboru ve všech spuštěných testech. Automatické zjišťování souborů runsettings můžete zapnout pomocí dvou metod:

  • Vyberte Nástroje>Možnosti>Test>Automatické zjišťování runsettings souborů

    možnost automaticky rozpoznat soubor runsettings v sadě Visual Studio

  • Vyberte Test>Konfigurovat nastavení spuštění>automatické zjišťování souborů runsettings.

    Automatické detekování menu souboru runsettings ve Visual Studio

Ruční výběr souboru nastavení spuštění

V integrovaném vývojovém prostředí vyberte Test>Konfigurovat nastavení spuštění>, vyberte soubor runsettings pro řešenía následně vyberte soubor .runsettings.

  • Tento soubor přepíše soubor .runsettings v kořenovém adresáři řešení, pokud existuje, a použije se ve všech spuštěných testech.
  • Tento výběr souboru se zachová jenom místně.

Výběr nabídky souboru runsettings v celém testovacím řešení v sadě Visual Studio

Nastavení vlastnosti sestavení

Přidejte do projektu vlastnost sestavení prostřednictvím souboru projektu nebo souboru Directory.Build.props. Soubor nastavení spuštění projektu je určen vlastností RunSettingsFilePath.

  • Nastavení spuštění na úrovni projektu je aktuálně podporováno v projektech C#, VB, C++ a F#.
  • Soubor určený pro projekt přepíše všechny ostatní soubory nastavení spuštění zadané v řešení.
  • Tyto vlastnosti nástroje MSBuild lze použít k určení cesty k souboru runsettings.

Příklad určení souboru .runsettings pro projekt:

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

Visual Studio 2019 verze 16.3 a starší

Chcete-li zadat soubor nastavení spuštění v integrovaném vývojovém prostředí, vyberte Test>Vyberte soubor nastavení. Vyhledejte a vyberte soubor .runsettings.

Zvolte nastavení souboru nabídky testu ve Visual Studio 2019

Soubor se zobrazí v nabídce Test a můžete ho vybrat nebo zrušit jeho výběr. I když je vybraný, soubor nastavení spuštění se použije vždy, když vyberete Analyzovat pokrytí kódu.

Zadání souboru nastavení spuštění z příkazového řádku

Pokud chcete spustit testy z příkazového řádku, použijte vstest.console.exea zadejte soubor nastavení pomocí parametru /Settings.

  1. Otevřete příkazový řádek pro vývojáře pro Visual Studio.

  2. Zadejte příkaz podobný následujícímu:

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

    nebo

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

Pro více informací viz VSTest.Console.exe možnosti příkazového řádku.

Soubor *.runsettings

Soubor *.runsettings je soubor XML, který obsahuje různé konfigurační prvky v rámci RunSettings elementu. Následující oddíly popisují různé prvky. Úplnou ukázku najdete v příkladu souboru *.runsettings.

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

Každý z elementů konfigurace je volitelný, protože má výchozí hodnotu.

Konfigurační spuštění – element

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

Element RunConfiguration může obsahovat následující prvky:

Uzel Výchozí Hodnoty
MaxCpuCount 1 Název možnosti je rozlišován podle malých a velkých písmen a mohlo by být snadno chybně napsáno jako MaxCPUCount.

Toto nastavení řídí úroveň paralelismu na úrovni procesu. Pomocí 0 povolíte maximální paralelismus na úrovni procesu.

Toto nastavení určuje maximální počet testovacích knihoven DLL nebo jiných testovacích kontejnerů, které lze spustit paralelně. Každá knihovna DLL běží ve vlastním procesu testhost a je izolovaná na úrovni procesu od testů v jiných testových knihovnách DLL. Toto nastavení nevynucuje paralelní spouštění testů v každé testovací knihovně DLL. Řízení paralelního spouštění v knihovně DLL (na úrovni vlákna) závisí na testovacím frameworku, jako je MSTest, xUnit nebo NUnit.

Výchozí hodnota je 1, což znamená, že současně běží pouze jeden testhost. Speciální hodnota 0 umožňuje tolik testhostů, kolik máte logických procesorů (například 6, pro počítač se 6 fyzickými jádry bez více vláken nebo 12 pro počítač se šesti fyzickými jádry s více vlákny).

Počet jedinečných knihoven DLL v běhu určuje skutečný počet spuštěných testhostů.
ResultsDirectory Adresář, do kterého se umístí výsledky testu. Cesta je relativní vzhledem k adresáři, který obsahuje soubor .runsettings.
TargetFrameworkVersion net40 nebo netcoreapp1.0 Vynechejte celou tuto značku pro automatické rozpoznání.

Toto nastavení definuje verzi architektury nebo řadu rozhraní, která se má použít ke spouštění testů.

Akceptované hodnoty jsou jakýkoliv moniker architektury, například net48, net472,net6.0, net5.0, netcoreapp3.1, uap10.0 nebo jakýkoli platný úplný název architektury, jako je.NETFramework,Version=v4.7.2 nebo .NETCoreApp,Version=v6.0.0. Pro zpětnou kompatibilitu jsou přijímány Framework35, Framework40, Framework45, FrameworkCore10, FrameworkUap10, což znamenánet35, net40, net45, netcoreapp1.0 a uap10.0. Všechny hodnoty nerozlišují malá a velká písmena.

Zadaná hodnota slouží k určení poskytovatele testovacího runtime. Každý poskytovatel testovacího modulu runtime musí respektovat rodinu rozhraní, která se má použít, ale nemusí respektovat přesnou verzi architektury:

Pro rozhraní .NET Framework 4.5.1 – 4.8 se používá testhost vytvořený se zadanou přesnou verzí. Pro hodnoty mimo tento rozsah se použije testhost rozhraní .NET Framework 4.5.1.

Pro .NET určuje <TargetFramework> testovacího projektu (nebo přesněji runtimeconfig.json) skutečnou verzi.

V případě UPW je aplikace testovacího projektu sama o sobě testhost a určuje skutečnou verzi UPW, která se používá.

Odebrání elementu TargetFrameworkVersion ze souboru .runsettings umožní automatické určení verze frameworku ze sestavených binárních souborů.

Při automatickém rozpoznávání jsou všechny cílové rámce sjednocené do jediného společného rámce. Pokud se najde jiná verze než stejná řada cílových architektur, zvolí se novější verze (například net452, net472, net48 = net48).

Pro spouštěč .NET Framework (ve Visual Studiu nebo vstest.console.exe v příkazovém řádku pro vývojáře) je společná cílová platforma net40. Pro .NET runner (dotnet test + knihovny DLL) je společná cílová architektura nastavená na netcoreapp1.0.
CílováPlatforma x86 Vynechejte celou tuto značku pro automatické rozpoznání.

Toto nastavení definuje architekturu, která se má použít ke spouštění testů. Možné hodnoty jsou x86, x64, ARM, ARM64, S390x.

Při automatické detekci se architektura DLL knihoven pro AnyCPU může lišit v závislosti na spouštěči. Pro .NET Framework runner (v sadě Visual Studio nebo vstest.console.exe v příkazovém řádku pro vývojáře) je výchozí x86. Pro .NET runner (dotnet test) je výchozí aktuální architektura procesu.

TreatTestAdapterErrorsAsWarnings falešný nepravda, pravda
TestovacíAdaptérCesty Jedna nebo více cest k adresáři, kde se nachází TestAdapter
TestCaseFilter Výraz filtru ve formátu vlastnostoperátorhodnota[|&&výraz]. Logický operátor & by měl reprezentovat entita HTML &. Výrazy mohou být uzavřeny v závorkách. Podrobnou syntaxi struktury výrazů naleznete v dokumentu vstest/docs/filter.md.
TestSessionTimeout Umožňuje uživatelům ukončit testovací relaci, když překročí daný časový limit zadaný v milisekundách. Nastavení časového limitu zajišťuje, že prostředky jsou dobře spotřebované a testovací relace jsou omezené na nastavený čas. Nastavení je dostupné v Visual Studio 2017 verze 15.5 a novější.
DotnetHostPath Zadejte vlastní cestu k hostiteli dotnet, který se používá ke spuštění testhostu. Je užitečné, když vytváříte vlastní dotnet, například při vytváření úložiště dotnet/runtime. Nastavením této možnosti se přeskočí hledání testhost.exea vynutí se použití testhost.dll.
TreatNoTestsAsError falešný pravda nebo lež
Zadejte logickou hodnotu, která definuje ukončovací kód, pokud nejsou zjištěny žádné testy. Pokud je hodnota true a nejsou zjištěny žádné testy, vrátí se nenulový ukončovací kód. V opačném případě se vrátí nula.

Element DataCollectors (adaptéry diagnostických dat)

Prvek DataCollectors určuje nastavení adaptérů diagnostických dat. Adaptéry diagnostických dat shromažďují další informace o prostředí a aplikaci, která se testuje. Každý adaptér má výchozí nastavení a nastavení musíte zadat jenom v případě, že nechcete používat výchozí hodnoty.

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

Kolektor dat pro Coverage kódu

Kolektor dat krytí kódu vytvoří protokol o tom, které části aplikačního kódu byly v testu uplatněny. Podrobné informace o přizpůsobení nastavení pokrytí kódu naleznete v tématu Přizpůsobení analýzy pokrytí kódu.

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

Kolekce dat VideoRecorder

Kolektor dat videa zaznamenává záznam obrazovky při spuštění testů. Tato nahrávka je užitečná pro řešení potíží s testy uživatelského rozhraní. Kolektor dat videa je k dispozici v sadě Visual Studio 2017 verze 15.5 a novějších verzích. Příklad konfigurace tohoto kolektoru dat najdete v Příklad *.runsettings souboru.

Chcete-li přizpůsobit jakýkoli jiný typ adaptérů diagnostických dat, použijte soubor nastavení testu.

Obviňování kolektoru dat

Tato možnost vám může pomoct izolovat problematický test, který způsobuje chybové ukončení hostitele testu. Spuštění kolektoru vytvoří výstupní soubor (Sequence.xml) v TestResults, který zachycuje pořadí spuštění testu před selháním.

Ve třech různých režimech můžete spustit příkaz blame:

  • Režim sekvenčního souboru: pro vytvoření souboru obsahujícího seznam testů až do zavěšení
  • Režim výpisu stavu systému: Vytvoření výpisu stavu při chybovém ukončení hostitele
  • Režim vytvoření výpisu při pozastavení: Vytvoření výpisu paměti, pokud se test nedokončí před vypršením časového limitu

Konfigurace XML by měla být umístěna přímo do <RunSettings> uzlu:

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

Parametry testovacího spuštění poskytují způsob, jak definovat proměnné a hodnoty, které jsou k dispozici pro testy za běhu. Přístup k parametrům pomocí vlastnosti MSTest TestContext.Properties (nebo NUnit TestContext):

public TestContext TestContext { get; set; }

[TestMethod] // [Test] for NUnit
public void HomePageTest()
{
    string appUrl = TestContext.Properties["webAppUrl"];
}

Pokud chcete použít parametry testovacího spuštění, přidejte do testovací třídy veřejnou TestContext vlastnost.

LoggerRunSettings – prvek

Oddíl LoggerRunSettings definuje jeden nebo více protokolovacích nástrojů, které se mají použít pro testovací běh. Nejběžnějšími protokolovacími nástroji jsou konzola, soubor výsledků testů sady Visual Studio (trx) a html.

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

Tato nastavení jsou specifická pro testovací adaptér, který spouští testovací metody s atributem TestMethodAttribute.

<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>
Konfigurace Výchozí Hodnoty
ForcedLegacyMode falešný Ve starších verzích sady Visual Studio byl adaptér MSTest optimalizovaný tak, aby byl rychlejší a škálovatelný. Některé chování, například pořadí spuštění testů, nemusí být přesně stejné jako v předchozích edicích sady Visual Studio. Nastavte hodnotu na true k použití staršího testovacího adaptéru.

Toto nastavení můžete použít například v případě, že máte pro test jednotek zadaný soubor app.config.

Doporučujeme zvážit refaktoring testů, abyste mohli používat novější adaptér.
SettingsFile Tady můžete zadat soubor nastavení testu, který se má použít s adaptérem MSTest. Můžete také zadat soubor nastavení testu z nabídky nastavení.

Pokud zadáte tuto hodnotu, musíte také nastavit režim ForcedLegacyMode na true.

<ForcedLegacyMode>true</ForcedLegacyMode>
DeploymentEnabled pravda Pokud nastavíte hodnotu na false, položky nasazení, které jste zadali v testovací metodě, se do adresáře nasazení nekopírují.
CaptureTraceOutput pravdivý Zachyťte textové zprávy přicházející z Console.Write*, Trace.Write*, Debug.Write* API, které budou přidruženy k aktuálně běžícímu testu.
PovolitMetodyTestůZákladníTřídyZJinýchSestavení pravdivý Hodnota označující, zda povolit zjišťování testovacích metod ze základních tříd v jiném sestavení, než je sestavení testovací třídy, která dědí.
ClassCleanupLifecycle EndOfClass Pokud chcete, aby k vyčištění třídy došlo na konci sestavování, nastavte to na EndOfAssembly. (Od MSTest v4 už se nepodporuje, protože EndOfClass je výchozí a jediným chováním ClassCleanup)
MapNotRunnableToFailed pravdivý Hodnota označující, zda není spustitelný výsledek namapován na neúspěšný test.
paralelizace Slouží k nastavení paralelizace:

Pracovní procesy: počet vláken/pracovních procesů, které se mají použít pro paralelizaci, což je ve výchozím nastavení počet procesorů na aktuálním počítači.

SCOPE: Rozsah paralelizace. Můžete ho nastavit na MethodLevel. Ve výchozím nastavení je to classLevel.

<Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize>
Časový limit testu 0 Získá zadaný časový limit globálního testovacího případu.
TreatDiscoveryWarningsAsErrors falešný Chcete-li hlásit upozornění zjišťování testů jako chyby, nastavte tuto hodnotu na hodnotu true.
PovažovatVarováníPřiCleanupuTřídyASIAssemblyZaChyby falešný Pokud chcete zobrazit neúspěchy v čištění tříd jako chyby, nastavte tuto hodnotu na true.
NasazeníTestovacíchZdrojovýchZávislostí pravda Hodnota označující, zda mají být nasazeny odkazy na zdroj testů.
OdstranitAdresářNasazeníPoDokončeníTestovacíhoBěhu pravda Pokud chcete zachovat adresář nasazení po testovacím spuštění, nastavte tuto hodnotu na hodnotu false.
MapInconclusiveToFailed falešný Pokud se test dokončí s neurčitým stavem, namapuje se na vynechaný stav v Průzkumníku testů. Pokud chcete, aby se nevýsledné testy zobrazovaly jako neúspěšné, nastavte hodnotu na hodnotu true.
Uvažujte o testovacím prostředí jako o speciálních testech falešný Pokud chcete zobrazit AssemblyInitialize, AssemblyCleanup, ClassInitialize, ClassCleanup jako jednotlivé položky v sadě Visual Studio a editoru Visual Studio Code Test Explorer a .trx protokolu, nastavte tuto hodnotu na hodnotu true
ShromážděníUsnesení falešný Při hledání a spouštění testů jednotek můžete určit cesty k dalším sestavením. Tyto cesty použijte například pro sestavení závislostí, která nejsou ve stejném adresáři jako testovací sestavení. Chcete-li zadat cestu, použijte prvek Cesta k adresáři. Cesty můžou zahrnovat proměnné prostředí.

<AssemblyResolution> <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/> </AssemblyResolution>

Všimněte si, že tato funkce se používá pouze při použití cíle rozhraní .NET Framework.

Příklad souboru .runsettings

Následující kód XML ukazuje obsah typického souboru .runsettings. Zkopírujte tento kód a upravte ho tak, aby vyhovoval vašim potřebám.

Každý prvek souboru je volitelný, protože má výchozí hodnotu.

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

Zadání proměnných prostředí v souboru .runsettings

Proměnné prostředí lze nastavit v souboru .runsettings, který může přímo pracovat s testovacím hostitelem. Zadání proměnných prostředí v souboru .runsettings je nezbytné pro podporu netriviálních projektů, které vyžadují nastavení proměnných prostředí, jako je DOTNET_ROOT. Tyto proměnné jsou nastavené při vytváření procesu testovacího hostitele a jsou k dispozici v hostiteli.

Příklad

Následující kód je ukázkový souboru .runsettings, který předává proměnné prostředí:

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

Uzel RunConfiguration by měl obsahovat uzel EnvironmentVariables. Proměnnou prostředí lze zadat jako název elementu a její hodnotu.

Poznámka

Vzhledem k tomu, že tyto proměnné prostředí by měly být vždy nastaveny při spuštění testovacího hostitele, testy by se měly vždy spouštět v samostatném procesu. V takovém případě se příznak /InIsolation nastaví, pokud existují proměnné prostředí, aby byl testovací hostitel vždy vyvolán.