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 vašeho řešení zvolte Přidat>novou položku a vyberte Soubor XML. Uložte soubor s názvem, jako je test.runsettings.

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

    Tip

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

  2. Přidejte obsah ze souboru Example *.runsettings a pak ho upravte podle svých potřeb, jak je popsáno v následujících částech.

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

  4. Spuštěním testů jednotek použijte 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 .

Tip

V řešení můžete vytvořit více než jeden soubor .runsettings a podle potřeby ho vybrat 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:

  • Výběr možnosti>nástroje>– Test>automatického zjišťování souborů runsettings

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

  • Výběr možnosti Test>Configure Run Nastavení> Auto Detect runsettings Files

    Nabídka automaticky rozpoznat soubor runsettings v sadě Visual Studio

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

V integrovaném vývojovém prostředí vyberte možnost Test>Configure Run Nastavení> Select Solution Wide runsettings File a pak 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 testech.
  • Tento výběr souboru se zachová jenom místně.

Výběr nabídky souboru runsettings na úrovni celého testovacího ř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í Run Nastavení FilePath.

  • 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 zadání 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 možnost Test>Vybrat Nastavení Soubor. Vyhledejte a vyberte soubor .runsettings .

Výběr nabídky souboru nastavení testu v sadě Visual Studio 2019

Soubor se zobrazí v nabídce Test a můžete ho vybrat nebo zrušit jeho výběr. Když je tato možnost vybraná, použije se soubor nastavení spuštění vždy, když vyberete Možnost 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.exe a zadejte soubor nastavení pomocí parametru /Nastavení.

  1. Otevřete vývojářský příkazový řádek 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
    

Další informace najdete v VSTest.Console.exe možnostech příkazového řádku.

Soubor *.runsettings

Soubor *.runsettings je soubor XML, který obsahuje různé konfigurační prvky v elementu Run Nastavení. Oddíly, které sledují podrobnosti o různých prvcích. Kompletní 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.

RunConfiguration – 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 0 V názvu možnosti se rozlišují malá a velká písmena a je snadné chybně napsané 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) je až do testovací architektury, 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 Vynechání celé značky k automatickému rozpoznání

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

Přijaté hodnoty jsou libovolným monikerem architektury, například net48, ,net472net6.0, net5.0, netcoreapp3.1nebo uap10.0 libovolným platným úplným názvem architektury, například.NETFramework,Version=v4.7.2 nebo .NETCoreApp,Version=v6.0.0. Pro zpětnou kompatibilitu Framework35, , , FrameworkCore10Framework45Framework40, jsou FrameworkUap10 přijímány, význam (net35, net40, net45, netcoreapp1.0 a uap10.0 v uvedeném pořadí). Všechny hodnoty nerozlišují malá a velká písmena.

Zadaná hodnota se používá k určení zprostředkovatele testovacího modulu runtime, který se má použít. 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 testovací projekt <TargetFramework> (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á.

Vynecháním elementu TargetFrameworkVersionze souboru .runsettings automaticky určíte verzi architektury z sestavených binárních souborů.

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

Pro .NET Framework runner (v sadě Visual Studio nebo vstest.console.exe v příkazovém řádku pro vývojáře) je společná cílová architektura net40. Pro .NET runner (dotnet test + knihovny DLL) je společná cílová architektura nastavená na netcoreapp1.0.
Targetplatform x86 Vynechání celé značky k automatickému rozpoznání

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

Při automatickém vytváření se architektura knihoven DLL 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í hodnota x86. Pro .NET runner (dotnet test) je výchozí aktuální architektura procesu.

TreatTestAdapterErrorsAsWarnings false (nepravda) false, true
TestAdapterPaths Jedna nebo více cest k adresáři, kde se nachází TestAdapter
TestCaseFilter Výraz filtru v hodnotě> operátoru><vlastnosti><formátu<[|&<Výraz>]. Logický operátor &by měl být reprezentován entitou HTML. Výrazy mohou být uzavřeny v závorkách. Podrobnou syntaxi struktury výrazů najdete v tématu vstest/docs/filter.md.
TestSessionTimeout Umožňuje uživatelům ukončit testovací relaci, když překročí daný časový limit. 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 sadě 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. Zadání této možnosti přeskočí hledání testhost.exe a vynutí použití testhost.dll.
TreatNoTestsAsError false (nepravda) true nebo false
Zadejte logickou hodnotu, která definuje ukončovací kód, pokud nejsou zjištěny žádné testy. Pokud je true hodnota 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)

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

Kolektor dat pokrytí kódu vytvoří protokol uvádějící, které části kódu aplikace byly použity v testu. 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ší. Příklad konfigurace tohoto kolektoru dat najdete v souboru Example *.runsettings.

Pokud chcete 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í provádění testu před chybou.

Příčinu můžete spustit ve třech různých režimech:

  • Režim sekvenčního souboru: Vytvoření souboru se seznamem testů až po zablokování
  • Režim výpisu stavu systému: Vytvoření výpisu stavu při chybovém ukončení hostitele
  • Režim zablokování výpisu paměti: Vytvoření výpisu paměti, pokud se test nedokončí před daným vypršením časového limitu

Konfigurace XML by se měla umístit 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):

private string _appUrl;
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.

LoggerRun Nastavení – element

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, které mají TestMethodAttribute atribut.

<MSTest>
    <MapInconclusiveToFailed>True</MapInconclusiveToFailed>
    <CaptureTraceOutput>false</CaptureTraceOutput>
    <DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
    <DeploymentEnabled>False</DeploymentEnabled>
    <AssemblyResolution>
      <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/>
    </AssemblyResolution>
</MSTest>
Konfigurace Výchozí Hodnoty
ForcedLegacyMode false (nepravda) Ve starších verzích sady Visual Studio byl adaptér MSTest optimalizovaný tak, aby byl rychlejší a škálovatelný. Některé rysy chování sady, jako například pořadí, ve kterém jsou testy spuštěny, nemusí být přesně stejné jako v předchozích edicích sady Visual Studio. Nastavte hodnotu true tak, aby používala starší testovací adaptér.

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

Doporučujeme zvážit refaktoring testů, aby bylo možné použít novější adaptér.
Nastavení Soubor 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 ForcedLegacyMode na true.

<ForcedLegacyMode>true</ForcedLegacyMode>
DeploymentEnabled true Pokud nastavíte hodnotu false, položky nasazení, které jste zadali v testovací metodě, se do adresáře nasazení nekopírují.
CaptureTraceOutput true Zachytávání textových zpráv přicházejících z Console.Write*rozhraní Trace.Write*API , Debug.Write* které bude přidruženo k aktuálnímu spuštěném testu.
EnableBaseClassTestMethodsFromOtherAssemblies true Hodnota označující, zda povolit zjišťování testovacích metod ze základních tříd v jiném sestavení než dědění testovací třídy.
ClassCleanupLifecycle EndOfClass Pokud chcete, aby vyčištění třídy na konci sestavení, nastavte ho na EndOfAssembly. (Od MSTest v4 se už nepodporuje, protože EndOfClass je výchozí a pouze Chování TřídyCleanup )
MapNotRunnableToFailed true 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>
TestTimeout 0 Získá zadaný časový limit globálního testovacího případu.
TreatDiscoveryWarningsAsErrors false (nepravda) Pokud chcete nahlásit upozornění zjišťování testů jako chyby, nastavte tuto hodnotu na true.
TreatClassAndAssemblyCleanupWarningsAsErrors false (nepravda) Pokud chcete zobrazit chyby v čištění tříd jako chyby, nastavte tuto hodnotu na true.
DeployTestSourceDependencies true Hodnota označující, zda mají být nasazeny odkazy na zdroj testů.
DeleteDeploymentDirectoryAfterTestRunIsComplete true Pokud chcete zachovat adresář nasazení po testovacím spuštění, nastavte tuto hodnotu na false.
MapInconclusiveToFailed false (nepravda) Pokud se test dokončí s neprůhledným stavem, mapuje se na vynechaný stav v Průzkumníku testů. Pokud chcete, aby se neclusivní testy zobrazovaly jako neúspěšné, nastavte hodnotu na true.
AssemblyResolution false (nepravda) 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 element Cesta adresáře . 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í 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 komunikovat 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ý soubor .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. Příznak /InIsolation bude nastaven, pokud existují proměnné prostředí, aby byl testovací hostitel vždy vyvolán.