Sdílet prostřednictvím


Přizpůsobení analýzy pokrytí kódu

Ve výchozím nastavení nástroje pro sadu Visual Studio pokrytí kódu analyzuje všechna sestavení řešení (.exe/.dll), které jsou načteny během testování částí.Doporučujeme zachovat toto výchozí nastavení, protože ve většině případů funguje dobře.Další informace naleznete v tématu Použití pokrytí kódu k určení rozsahu testovaného kódu.

Před přizpůsobení chování pokrytí kódu, zvažte některé možnosti:

  • Chcete vyloučit z výsledků pokrytí kódu testovací kód a obsahovat pouze kód aplikace.

    Přidat ExcludeFromCodeCoverage atribut ke třídě test.

  • Chcete zahrnout sestavení, které nejsou součástí tohoto řešení.

    Získejte soubory s příponou .pdb pro tato sestavení a zkopírujte je do stejné složky jako soubory sestavení s příponou .dll.

Chcete-li přizpůsobit chování pokrytí kódu, zkopírujte ukázky na konci tohoto tématu a přidat jej do vašeho řešení pomocí .runsettings příponu souboru.Upravit svých potřeb a potom na Test nabídce zvolte Nastavení testu, Vyberte nastavení testu souboru.Zbývající část tohoto tématu popisuje tento postup podrobněji.

Soubor s příponou .runsettings

V souboru s příponou .runsettings jsou uvedena upřesňující nastavení pokrytí kódu.Jedná se o konfigurační soubor používaný nástroji pro testování částí.Doporučujeme, abyste můžete zkopírovat ukázky na konci tohoto tématu a upravit tak, aby odpovídal svých potřeb.

Chcete-li přizpůsobit pokrytí kódu, je nutné přidat soubor s příponou .runsettings do vašeho řešení:

  1. Přidat soubor .xml jako položku řešení s příponou .runsettings:

    V Průzkumníku řešení v místní nabídce vašeho řešení, zvolte Přidat, novou položku, a vyberte možnost soubor XML.Uložte soubor s názvem, jako je například koncové CodeCoverage.runsettings

  2. Přidejte obsah uvedený v ukázce kódu na konci tohoto tématu a potom jej přizpůsobte svým potřebám tak, jak je popsáno v následujících částech.

  3. Na Test nabídce zvolte Nastavení testu, Vyberte soubor nastavení testu a vyberte soubor.

  4. Pokud nyní spustíte analýze pokrytí kódu, tato .runsettings soubor bude řídit jeho chování.Nezapomeňte, že musíte spustit pokrytí kódu znovu: předchozí výsledky pokrytí a barevné zvýraznění kódu nejsou při spuštění testů nebo aktualizaci kódu automaticky skryty.

  5. Vlastní nastavení vypnutí a zapnutí, zrušit výběr nebo vyberte soubor v Test, Nastavení testu nabídky.

Test nastavení nabídku s vlastní nastavení souboru

Další aspekty testování částí lze nakonfigurovat ve stejném souboru s příponou .runsettings.Další informace naleznete v tématu Ověřování kódu pomocí testování částí.

Určení cest pro hledání symbolů

Pokrytí kódu vyžaduje, aby byly pro sestavení k dispozici symboly (soubory s příponou .pdb).V případě sestavení vytvořených vaším řešením jsou soubory symbolů obvykle k dispozici spolu s binárními soubory a pokrytí kódu pracuje automaticky.Ale v některých případech můžete chtít zahrnout odkazovaná sestavení do analýzy pokrytí kódu.V takových případech se nemusí soubory s příponou .pdb nacházet u binárních souborů, ale můžete zadat cestu pro hledání symbolů v souboru s příponou .runsettings.

         <SymbolSearchPaths>              
               <Path>\\mybuildshare\builds\ProjectX</Path>
               <!--More paths if required-->
         </SymbolSearchPaths>
Poznámka k upozorněníUpozornění

Vyhodnocování symbolů může trvat dobu, zvláště při použití vzdáleného umístění souborů s velkým množstvím sestavení.Zvažte proto možnost zkopírování vzdálených souborů s příponou .pdb do stejného umístění jako binární soubory (.dll a .exe).

Vyloučení a zahrnutí

Vybraná sestavení lze vyloučit z analýzy pokrytí kódu.Příklad:

<ModulePaths>
  <Exclude>
   <ModulePath>Fabrikam.Math.UnitTest.dll</ModulePath>
   <!-- Add more ModulePath nodes here. -->
  </Exclude>
</ModulePaths>

Nebo naopak můžete vybrat sestavení, která chcete do analýzy zahrnout.Tento přístup má tu nevýhodu, že při přidání více sestavení k řešení je nesmíte zapomenout přidat do seznamu:

<ModulePaths>
  <Include>
   <ModulePath>Fabrikam.Math.dll</ModulePath>
   <!-- Add more ModulePath nodes here. -->
  </Include>
</ModulePaths>

Pokud <Include> je prázdný, pak zpracování pokrytí kódu obsahuje všechna sestavení (soubory DLL a .exe), které jsou načteny, pro něž .pdb soubory se nacházejí, s výjimkou položky, které odpovídají klauzule v <Exclude> seznamu.

Include je zpracována před Exclude.

Regulární výrazy

Pomocí regulárních výrazů můžete zahrnout a vyloučit uzly.Další informace naleznete v tématu Používání regulárních výrazů v sadě Visual Studio.Regulární výrazy nejsou stejné jako zástupné znaky.Zejména:

  1. . * odpovídá řetězec žádné znaky

  2. \. odpovídá tečku ".")

  3. \ (\) odpovídá závorky (")"

  4. \\ odpovídá oddělovač cesty souboru "\

  5. ^ odpovídá začátku řetězce

  6. $ odpovídá konci řetězce

Ve shodách se nerozlišují velká a malá 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>
Poznámka k upozorněníUpozornění

Pokud je v regulárním výrazu chyba, jako například neřídící a nesprávně umístěné závorky, analýza pokrytí kódu se nespustí.

Další způsoby zahrnutí nebo vyloučení prvků

Podívejte se na téma ukázky na konci tohoto tématu příklady.

  • ModulePath – Sestavení určené cestu k souboru sestavení.

  • CompanyName – odpovídá sestavení pomocí atributu společnosti.

  • PublicKeyToken – odpovídá podepsaný token veřejného klíče sestavení.Například chcete vyhledat všechny součásti sady Visual Studio a rozšíření, použijte <PublicKeyToken>^B03F5F7F11D50A3A$</PublicKeyToken>.

  • Source – odpovídá elementy podle názvu cesty zdrojového souboru, ve kterém jsou definovány.

  • Attribute – odpovídá elementy, ke kterým je připojena určitý atribut.Zadejte úplný název atributu včetně výrazu „Atribut“ na konci názvu.

  • Function – odpovídá postupy, funkce nebo metody s plně kvalifikovaný název.

Porovnání názvu funkce

Regulární výraz musí odpovídat plně kvalifikovanému názvu funkce včetně oboru názvů, názvu třídy, názvu metody a seznamu parametrů.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 soubory s příponou .runsettings při spouštění testů

Přizpůsobení souboru s příponou .runsettings v testech sady Visual Studio

Zvolte Test, Nastavení testu, Vyberte soubor nastavení testu a vyberte soubor .runsettings.Soubor se zobrazí v nabídce Nastavení testu a můžete jej vybrat nebo zrušit.Při výběru souboru .runsettings platí vždy, když použijete analýze pokrytí kódu.

Přizpůsobení parametrů spuštění v testu příkazového řádku

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í konzoly VSTest.console z příkazového řádku.

  1. Spuštění příkazového řádku pro vývojáře sady Visual Studio:

    V systému Windows Start, zvolte Všechny programy, sady Microsoft Visual Studio, Visual Studio Tools, Developer příkazového řádku.

  2. Spusťte:

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

Přizpůsobení parametrů spuštění v definici sestavení

Data o pokrytí kódu můžete získat ze sestavení týmu.

Zadání runsettings v definici sestavení

  1. Zkontrolujte, zda byl soubor s příponou .runsettings vrácen se změnami.

  2. V Průzkumníku týmu otevřete sestavení, a přidat nebo upravit definici sestavení.

  3. Na proces stránky, rozbalte položku automatizované testy, Test zdroje, Spustit nastavení.Vyberte svůj .runsettings souboru.

    • Ale sestavení Test zobrazí se místo Test zdroje.Při pokusu nastavit Spustit nastavení pole, lze vybrat pouze .testsettings soubory.

      V části automatizované testy, vyberte možnost sestavení Test, a zvolte možnost [...] na konec řádku.V Přidat či upravit Test spustit dialogového okna, sada Test Runner k Visual Studio Test Runner.

Výsledky jsou zobrazeny v souhrnné části zprávy o sestavení.

Ukázkový soubor s příponou .runsettings

Zkopírujte tento kód a upravte jej podle svých potřeb.Toto je výchozí soubor s příponou .runsettings.

(Pro jiné účely souboru .runsettings, podívejte se na téma Konfigurace testování částí s použitím souboru .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>

Dotazy a odpovědi

  • Co se stalo se souborem s příponou .testsettings, který jsem používal v sadě Visual Studio 2010?

    V sadě Visual Studio 2010 se soubor s příponou .testsettings používá pouze při testování částí založeném na rozhraní MSTest.Testovací nástroje ze sady Visual Studio 2012, platí nejen MSTest, ale také dalších architektury například NUnit a xUnit.čisté.Soubor s příponou .testsettings nebude s těmito rozhraními fungovat.Soubor s příponou .runsettings je určen k provádění úprav testovacích nástrojů takovým způsobem, který je kompatibilní se všemi testovacími rozhraními.

Viz také

Koncepty

Ověřování kódu pomocí testování částí

Další zdroje

Použití pokrytí kódu k určení rozsahu testovaného kódu