Přizpůsobení analýzy pokrytí kódu
Ve výchozím nastavení nástroj Visual Studio 2012 kód disponibility analyzuje všechna sestavení řešení (.exe/.dll), které jsou načteny během testování částí.Doporučujeme ponechat toto výchozí nastavení, protože to funguje dobře ve většině případů.Další informace naleznete v tématu Je právě testován pomocí kódu disponibility zjistit, jak daleko kódu.
Před přizpůsobení chování kód disponibility, je třeba zvážit některé jejich alternativy:
Chcete vyloučit z výsledků kód disponibility testovacího kódu a obsahovat pouze kód aplikace.
Přidat ExcludeFromCodeCoverage Attribute do vaší třídy test.
Chcete zahrnout sestavení, které nejsou součástí tohoto řešení.
Získat soubory PDB pro tyto sestavení a zkopírujte je do stejné složky jako soubory DLL sestavení.
Chcete-li přizpůsobit chování kód disponibility, zkopírujte vzorku na konci tohoto tématu a přidat k řešení pomocí .runsettings příponu souboru.Upravit, na své vlastní potřeby a na Test nabídce zvolte Test nastavení, Vyberte nastavení testu souboru.Zbývající část tohoto tématu popisuje tento postup podrobněji.
Soubor .runsettings
Nastavení upřesňujících kód disponibility jsou zadané v souboru .runsettings.Toto je konfigurační soubor, který používá jednotka testovací nástroje.Doporučujeme, abyste při kopírování vzorku na konci tohoto tématu a upravit ho podle vlastních potřeb.
Co se stalo s .testsettings souboru, použitý v aplikaci Visual Studio 2010?
V sadě Visual Studio 2010 soubor .testsettings platí pouze pro testování částí, které jsou založeny na rozhraní MSTest.V aplikaci Visual Studio 2012 použít nástroje pro testování nejen MSTest, ale také jiných rámců, jako je například NUnit a xUnit.net.Soubor .testsettings nebude fungovat s těmito.Soubor .runsettings je určen k provádění úprav testovací nástroje způsobem, který pracuje s všechny rámce pro testování.
Chcete-li upravit kód disponibility, budete muset přidat do souboru .runsettings do vašeho řešení:
Přidat soubor XML jako položky řešení s příponou .runsettings:
V Průzkumníku řešení vyberte v místní nabídce řešení, Přidat, Nová položkaa vyberte XML souboru.Uložte soubor s názvem končícím jako CodeCoverage.runsettings
Přidat obsah, uveden v příkladu na konci tohoto tématu a jak je popsáno v následujících částech je přizpůsobit vašim potřebám.
Na Test nabídce zvolte Test nastavení, Vyberte soubor nastavení Test a vyberte soubor.
Pokud nyní spustíte Test, Analyzovat Průchod kódem, tento .runsettings souboru bude řídit své chování.
Vlastní nastavení vypnutí a zapnutí, odznačte volbu nebo vyberte soubor v Test, Test nastavení nabídky.
Další aspekty testování částí lze nakonfigurovat ve stejném souboru .runsettings.Další informace naleznete v tématu Ověření kódu pomocí zkoušky jednotky.
Určení cesty vyhledávání symbolu
Průchod kódem vyžaduje symboly (PDB soubory) pro sestavení, které může být k dispozici.Pro sestavení vytvořeného pomocí vašeho řešení symbol nacházejí soubory obvykle vedle binárních souborů a Průchod kódem pracuje automaticky.Ale v některých případech můžete chtít zahrnout analýzy kódu disponibility odkazovaných sestaveních.V takových případech soubory PDB nemusí sousedit binárních souborů, ale cesta pro hledání symbolů lze zadat v souboru .runsettings.
<SymbolSearchPaths>
<Path>\\mybuildshare\builds\ProjectX</Path>
<!--More paths if required-->
</SymbolSearchPaths>
![]() |
---|
Symbol rozlišení může trvat dobu, zvláště v případě, že pomocí umístění vzdáleného souboru s velkým množstvím sestavení.Zvažte proto kopírování souborů vzdáleného PDB do stejného umístění místní jako binární soubory (.dll a .exe). |
Vyloučení a zahrnutí
Vyloučení zadané sestavení z analýzy kódu disponibility.Příklad:
<ModulePaths>
<Exclude>
<ModulePath>Fabrikam.Math.UnitTest.dll</ModulePath>
<!-- Add more ModulePath nodes here. -->
</Exclude>
</ModulePaths>
Jako alternativu můžete určit, sestavení, by měly být zahrnuty.Tento přístup má nevýhodou, že přidáte do řešení více sestavení, budete muset nezapomeňte přidat do seznamu:
<ModulePaths>
<Include>
<ModulePath>Fabrikam.Math.dll</ModulePath>
<!-- Add more ModulePath nodes here. -->
</Include>
</ModulePaths>
Pokud <Include> je prázdná, pak kód disponibility zpracování obsahuje všechna sestavení (soubory .dll a .exe), které jsou načteny a pro které .pdb soubory se nacházejí, s výjimkou položky, které vyhovují klauzuli <Exclude> seznamu.
Includeje zpracována před Exclude.
Regulární výrazy
Zahrnout a vyloučit použití regulárních výrazů v uzlech.Další informace naleznete v tématu Použití regulárních výrazů v aplikaci Visual Studio.Regulární výrazy nejsou stejné jako zástupné znaky.Zejména:
. * odpovídá řetězec žádné znaky
\. odpovídá tečka ".")
\ (\) odpovídá závorky (")
\\ odpovídá oddělovač cesty souboru "\"
^ odpovídá začátku řetězce
$ odpovídá konci řetězce
Všechny shody jsou malá a velká písmena.
Příklad:
<ModulePaths>
<Include>
<!-- Include all loaded .dll assemblies (but not .exe assemblies): -->
<ModulePath>.*\.dll$</ModulePath>
</Include>
<Exclude>
<!-- But exclude some assemblies: -->
<ModulePath>.*\\Fabrikam\.MyTests1\.dll$</ModulePath>
<!-- Exclude all file paths that contain "Temp": -->
<ModulePath>.*Temp.*</ModulePath>
</Exclude>
</ModulePaths>
![]() |
---|
Pokud dojde k chybě v regulárním výrazu, jako jsou závorky bez řídících znaků a neodpovídající, nespustí se analýza kódu disponibility. |
Další způsoby, jak zahrnout nebo vyloučit prvky
Najdete vzorku na konci tohoto tématu příklady.
ModulePath– Sestavení určenou cestu k souboru sestavení.
CompanyName– odpovídá sestavení pomocí atributu společnosti.
PublicKeyToken– porovná token veřejného klíče podepsané sestavení.Například tak, aby odpovídala všechny součásti sady Visual Studio a rozšíření, použijte <PublicKeyToken>^B03F5F7F11D50A3A$</PublicKeyToken>.
Source– odpovídá prvky podle názvu cesty zdrojového souboru, ve kterém jsou definovány.
Attribute– odpovídá prvků, ke kterým je připojena určitý atribut.Zadejte úplný název atributu, včetně "Atribut" na konci názvu.
Function– odpovídá plně kvalifikovaný název procedury, funkce nebo metody.
Odpovídající názvu funkce
Regulární výraz se musí shodovat s plně kvalifikovaný název funkce, včetně oboru názvů, název třídy, metoda seznamu název a parametry.Příklad:
C# nebo Visual Basic:Fabrikam.Math.LocalMath.SquareRoot(double)
C++:Fabrikam::Math::LocalMath::SquareRoot(double)
<Functions>
<Include>
<!-- Include methods in the Fabrikam namespace: -->
<Function>^Fabrikam\..*</Function>
<!-- Include all methods named EqualTo: -->
<Function>.*.\EqualTo\(.*</Function>
</Include>
<Exclude>
<!-- Exclude methods in a class or namespace named UnitTest: -->
<Function>.*\.UnitTest\..*</Function>
</Exclude>
</Functions>
Jak určit .runsettings souborů při spuštění testů
Chcete-li přizpůsobit runsettings v testech Visual Studio
Zvolte Test, Test nastavení, Vyberte soubor nastavení Test a vyberte soubor .runsettings.Soubor se zobrazí v nabídce Test nastavení a můžete vybrat nebo zrušit.Při výběru souboru .runsettings platí při každém použití Analyzovat Průchod kódem.
Nastavení spustit v příkazovém řádku testu
Pro spuštění testů z příkazového řádku se používá příkaz vstest.console.exe.Soubor nastavení je parametr tohoto nástroje.Další informace naleznete v tématu Použití konzole VSTest.Console z příkazového řádku.
Spusťte Vývojářský příkazový řádek systému Visual Studio:
V systému Windows Start, zvolte Všechny programy, Microsoft Visual Studio, Nástroje aplikace Visual Studio, Developer příkazový řádek.
Spusťte:
vstest.console.exe MyTestAssembly.dll /EnableCodeCoverage /Settings:CodeCoverage.runsettings
Chcete-li přizpůsobit spuštění nastavení definice sestavení
Údaje o pokrytí kódu můžete získat ze sestavení týmu.
Zkontrolujte, zda že je zpřístupněný soubor .runsettings.
V Průzkumníku týmových projektů otevřete Sestavení a poté přidejte nebo upravte definici sestavení.
Na stránce Proces rozbalte položky Automatizované testy, Zdroj testu, Nastavení spuštění.Vyberte vaše .runsettings souboru.
Ale Zkoušce zobrazí se místo Test zdroje.Při pokusu nastavit Spustit nastavení pole, lze zvolit pouze soubory .testsettings.
Podle Automatické testy, vyberte Zkoušcea zvolte [...] na konci řádku.V Spustit Test přidat/upravit dialogové okno, nastavte Testu na Visual Studio testu.
Výsledky jsou viditelné v části Souhrn sestavy sestavení.
Ukázkový soubor .runsettings
Zkopírujte tento kód a upravit ho podle vlastních potřeb.Toto je výchozí soubor .runsettings.
<?xml version="1.0" encoding="utf-8"?>
<!-- File name extension must be .runsettings -->
<RunSettings>
<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>
<!--
Additional paths to search for .pdb (symbol) files. Symbols must be found for modules to be instrumented.
If .pdb files are in the same folder as the .dll or .exe files, they are automatically found. Otherwise, specify them here.
Note that searching for symbols increases code coverage runtime. So keep this small and local.
-->
<!--
<SymbolSearchPaths>
<Path>C:\Users\User\Documents\Visual Studio 2012\Projects\ProjectX\bin\Debug</Path>
<Path>\\mybuildshare\builds\ProjectX</Path>
</SymbolSearchPaths>
-->
<!--
About include/exclude lists:
Empty "Include" clauses imply all; empty "Exclude" clauses imply none.
Each element in the list is a regular expression (ECMAScript syntax). See https://msdn.microsoft.com/library/2k3te2cs.aspx.
An item must first match at least one entry in the include list to be included.
Included items must then not match any entries in the exclude list to remain included.
-->
<!-- Match assembly file paths: -->
<ModulePaths>
<Include>
<ModulePath>.*\.dll$</ModulePath>
<ModulePath>.*\.exe$</ModulePath>
</Include>
<Exclude>
<ModulePath>.*CPPUnitTestFramework.*</ModulePath>
</Exclude>
</ModulePaths>
<!-- Match fully qualified names of functions: -->
<!-- (Use "\." to delimit namespaces in C# or Visual Basic, "::" in C++.) -->
<Functions>
<Exclude>
<Function>^Fabrikam\.UnitTest\..*</Function>
<Function>^std::.*</Function>
<Function>^ATL::.*</Function>
<Function>.*::__GetTestMethodInfo.*</Function>
<Function>^Microsoft::VisualStudio::CppCodeCoverageFramework::.*</Function>
<Function>^Microsoft::VisualStudio::CppUnitTestFramework::.*</Function>
</Exclude>
</Functions>
<!-- Match attributes on any code element: -->
<Attributes>
<Exclude>
<!-- Don’t forget "Attribute" at the end of the name -->
<Attribute>^System.Diagnostics.DebuggerHiddenAttribute$</Attribute>
<Attribute>^System.Diagnostics.DebuggerNonUserCodeAttribute$</Attribute>
<Attribute>^System.Runtime.CompilerServices.CompilerGeneratedAttribute$</Attribute>
<Attribute>^System.CodeDom.Compiler.GeneratedCodeAttribute$</Attribute>
<Attribute>^System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute$</Attribute>
</Exclude>
</Attributes>
<!-- Match the path of the source files in which each method is defined: -->
<Sources>
<Exclude>
<Source>.*\\atlmfc\\.*</Source>
<Source>.*\\vctools\\.*</Source>
<Source>.*\\public\\sdk\\.*</Source>
<Source>.*\\microsoft sdks\\.*</Source>
<Source>.*\\vc\\include\\.*</Source>
</Exclude>
</Sources>
<!-- Match the company name property in the assembly: -->
<CompanyNames>
<Exclude>
<CompanyName>.*microsoft.*</CompanyName>
</Exclude>
</CompanyNames>
<!-- Match the public key token of a signed assembly: -->
<PublicKeyTokens>
<!-- Exclude Visual Studio extensions: -->
<Exclude>
<PublicKeyToken>^B77A5C561934E089$</PublicKeyToken>
<PublicKeyToken>^B03F5F7F11D50A3A$</PublicKeyToken>
<PublicKeyToken>^31BF3856AD364E35$</PublicKeyToken>
<PublicKeyToken>^89845DCD8080CC91$</PublicKeyToken>
<PublicKeyToken>^71E9BCE111E9429C$</PublicKeyToken>
<PublicKeyToken>^8F50407C4E9E73B6$</PublicKeyToken>
<PublicKeyToken>^E361AF139669C375$</PublicKeyToken>
</Exclude>
</PublicKeyTokens>
<!-- We recommend you do not change the following values: -->
<UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
<AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
<CollectFromChildProcesses>True</CollectFromChildProcesses>
<CollectAspDotNet>False</CollectAspDotNet>
</CodeCoverage>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>
Viz také
Koncepty
Ověření kódu pomocí zkoušky jednotky
Další zdroje
Je právě testován pomocí kódu disponibility zjistit, jak daleko kódu