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í
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.
Přidejte obsah ze souboru Example *.runsettingsa upravte ho podle pokynů v následujících částech.
Pomocí jedné z následujících metod zadejte soubor *.runsettings, který chcete použít:
- integrované vývojové prostředí sady Visual Studio
- Příkazový řádek
- vytvoření pracovního postupu pomocí azure Test Plans nebo Azure DevOps Serveru (dříve Označovaný jako Team Foundation Server (TFS)).
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í nastavení spuštění
- Ruční nastavení nastavení spuštění
- Nastavit vlastnost sestavení
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ů
Vyberte Test>Konfigurovat nastavení spuštění>automatické zjišťování souborů runsettings.
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ě.
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.
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.
Otevřete příkazový řádek pro vývojáře pro Visual Studio.
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) & (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 |
|
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) & (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.