Aracılığıyla paylaş


Kod Kapsamı Çözümlemeyi Özelleştirme

Varsayılan olarak, Visual Studio 2012 kod kapsamı aracını birim testleri sırasında yüklenen tüm çözüm derlemelerine (.exe/.dll) çözümler.Çoğu zaman iyi çalıştığı için bu varsayılan korumak öneririz.Daha fazla bilgi için bkz. Kod kapsamı belirlemek ne kadar kod kullanılarak test edilmiştir.

Kod kapsamı davranışını özelleştirme öncesinde bazı alternatifleri göz önünde bulundurun:

  • Kod kapsamı sonuçları test kodu hariç ve uygulama kodu dahil etmek istiyorum.

    Ekleme ExcludeFromCodeCoverage Attribute test sınıfınıza.

  • Benim çözümün parçası olmayan derlemeler dahil etmek istiyorum.

    Bu derlemeler için .pdb dosyalarını alabilir ve derleme .dll dosyalarını aynı klasöre kopyalayın.

Kod kapsamı davranışını özelleştirmek için kopyalama Bu konunun sonundaki örnek ve dosya uzantısı .runsettings kullanarak çözümünüze eklemelisiniz.Kendi gereksinimlerinize ve üzerinde düzenleme Test menüsünden seçin Test ayarları, Test ayarlarını seçin dosyası.Bu konu geri kalanı bu yordamı daha ayrıntılı açıklanmaktadır.

.Runsettings dosyası

Gelişmiş kod kapsamı ayarlarını .runsettings dosyasında belirtilir.Birim test etme araçları tarafından kullanılan yapılandırma dosyasıdır.Kopyaladığınız öneririz Bu konunun sonundaki örnek ve kendi gereksinimlerinize göre düzenleyin.

  • Visual Studio 2010'daki kullandım .testsettings dosyasına ne oldu?

    Visual Studio 2010'da .testsettings dosya MSTest Framework'ü temel birim testleri için geçerlidir.Visual Studio 2012 MSTest ancak NUnit ve xUnit gibi diğer çerçeveler yalnızca sınama araçlarını uygulayın.NET..Testsettings dosya ile bunlar çalışmaz..Runsettings dosyası test araçları, tüm test çerçeveler ile çalışır şekilde özelleştirmek için tasarlanmıştır.

Kod kapsamı özelleştirmek için çözümünüz için bir .runsettings dosyası eklemeniz gerekir:

  1. Bir .xml dosyası uzantısı ile bir çözüm öğesi olarak eklemek .runsettings:

    Çözüm Gezgini içinde çözümünüzün, kısayol menüsünden seçin Ekle, Yeni maddeve xml dosyası.Dosya gibi biten bir adla kaydetmek CodeCoverage.runsettings

  2. Bu konunun sonunda örnek verilen içerik ekleyebilir ve sonra gereksinimleriniz için aşağıdaki bölümlerde açıklandığı şekilde özelleştirebilirsiniz.

  3. Üzerinde Test menüsünden seçin Test ayarları, Test ayarları dosyasını seçin ve dosyayı seçin.

  4. Şimdi çalıştırdığınızda Test, Kod kapsamı çözümleme, bu .runsettings dosyası davranışını denetler.

  5. Özel ayarlar ve devre dışı bırakmak, seçimini kaldırın veya dosyayı seçmek için Test, Test ayarları menüsü.

Test Ayarları menüsünden özel ayarları dosyası

Birim testleri diğer yönleri aynı .runsettings dosyası içinde yapılandırılabilir.Daha fazla bilgi için bkz. Kod birimi sınamaları kullanarak doğrulama.

JJ159530.collapse_all(tr-tr,VS.110).gifSimge arama yolu belirtme

Kod kapsamı simgeleri (.pdb dosyalarını) derlemeler için mevcut olması gerekir.Çözümünüz tarafından oluşturulmuş derlemeler, simge dosyaları genellikle ikili dosyaların bulunur ve kod kapsamı otomatik olarak çalışır.Ancak bazı durumlarda, kod kapsamı çözümleme içinde başvurulmuş derlemeleri eklemek isteyebilirsiniz.Bu gibi durumlarda .pdb dosyalarını ikili dosyalarına bitişik olmayabilir, ancak simge arama yolu .runsettings dosyasında belirtebilirsiniz.

         <SymbolSearchPaths>              
               <Path>\\mybuildshare\builds\ProjectX</Path>
               <!--More paths if required-->
         </SymbolSearchPaths>
Uyarı notuUyarı

Sembol çözünürlük zaman alabilir özellikle uzak dosya konumu ile çok sayıda derlemeleri kullanırken.Bu nedenle, ikili (.dll ve .exe) dosyaları ile aynı yerel konuma uzak .pdb dosyalarını kopyalama düşünün.

JJ159530.collapse_all(tr-tr,VS.110).gifDahil ve hariç

Belirtilen derleme kod kapsamı çözümleme dışlayabilirsiniz.Örne?in:

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

Alternatif olarak, hangi derlemelerin dahil edileceğini belirtebilirsiniz.Bu yaklaşımın dezavantajı vardır daha fazla derlemeleri çözümü eklediğinizde, listeye eklemeyi unutmayın olduğunu:

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

<Include> Kod kapsamı işleme yüklenen ve kendisi için olan tüm derlemelere (.dll ve .exe dosyaları) içerir sonra boş olduğundan .pdb dosyaları bulunabilir, yan tümcesinde eşleşen öğeleri dışında bir <Exclude> listesi.

Includeönce işlenen Exclude.

JJ159530.collapse_all(tr-tr,VS.110).gifNormal ifadeler

Düğümleri kullanımı normal ifadeler hariç ve içerir.Daha fazla bilgi için bkz. Visual Studio ile normal ifadeler kullanma.Normal ifadeler joker karakterler ile aynı değildir.Özellikle:

  1. . * ile eşleşen herhangi bir karakter dizesi

  2. \. eşleşen bir nokta ".")

  3. \ (\) eşleşen ayraç (")"

  4. \\ eşleşen bir dosya yolu sınırlayıcı "\"

  5. ^ dizenin başıyla eşleşir

  6. $ dize sonu ile eşleşir

Tüm eşleşmeleri büyük/küçük harf duyarsızdır.

Örne?in:

<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>
Uyarı notuUyarı

Bir normal ifade çıkmamış ve eşleşmeyen ayraç gibi bir hata varsa kod kapsamı çözümleme çalışmaz.

JJ159530.collapse_all(tr-tr,VS.110).gifÖğeleri içerecek veya diğer yolları

Bkz: Bu konunun sonundaki örnek örnekler.

  • ModulePath– Derleme dosyası yolu tarafından belirtilen derlemeler.

  • CompanyName– Şirket özniteliği tarafından derlemeler eşleşir.

  • PublicKeyToken– eşleşmeleri imzalı derlemelerin tarafından ortak anahtar belirteci.Örneğin, tüm Visual Studio bileşenleri ve uzantıları eşleştirmek, <PublicKeyToken>^B03F5F7F11D50A3A$</PublicKeyToken>.

  • Source– tanımlandıkları kaynak dosya yolu adıyla eşleşen öğeleri.

  • Attribute– eşleşen öğeleri belirli bir özniteliği eklenir.Öznitelik adının sonunda "özniteliği" da dahil olmak üzere tam adını belirtin.

  • Function– yordamları, işlevleri veya yöntemleri tam adıyla eşleştirir.

Bir işlev adı eşleştirme

Normal ifadenizin işlevinin ad alanı, sınıf adı, yöntemin adı ve parametre listesi de dahil olmak üzere tam nitelikli adı eşleşmelidir.Örnek:

  • C# veya 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>

Testleri çalıştırırken .runsettings dosyaları belirleme hakkında

JJ159530.collapse_all(tr-tr,VS.110).gifRunsettings Visual Studio testlerinde özelleştirmek için

Seçim Test, Test ayarları, Test ayarları dosyasını seçin ve .runsettings dosyasını seçin.Dosya Test ayarları menüsünde görünür ve seçin veya iptal edin.Seçili durumdayken, kullandığınızda .runsettings dosyanızı geçerlidir Kod kapsamı çözümleme.

JJ159530.collapse_all(tr-tr,VS.110).gifKomut satırı test çalıştırma ayarlarını özelleştirmek için

Komut satırından testleri çalıştırmak için vstest.console.exe kullanın.Ayarlar dosyasını, bu yardımcı program bir parametredir.Daha fazla bilgi için bkz. VSTest.Console Aracını Komut Satırından Kullanma.

  1. Visual Studio Geliştirici komut istemini başlatın:

    Windows Başlangıç, seçim Tüm programları, Microsoft Visual Studio, Visual Studio Araçları, Geliştirici komut istemi.

  2. Çalıştır:

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

JJ159530.collapse_all(tr-tr,VS.110).gifBir yapı tanımını çalıştırma ayarlarını özelleştirmek için

Bir takım derleme işlemindeki kod kapsama verisi elde edebilirsiniz.

Runsettings yapı tanımında belirtme

  1. .Runsettings dosyanızı işaretli olduğundan emin olun.

  2. Ekip Gezgininde, Builds 'i açın ve sonra ekleyin veya bir yapı tanımı düzenleyin.

  3. Üzerinde İşlem sayfasında, genişletin Otomatik Testler, Test Kaynağı, Ayarları Çalıştır.Seçin, .runsettings dosyası.

    • Ancak Test derlemesinin yerine görünür Test kaynak.Çalıştığım zaman ayarlamak Çalıştırma ayarları alan yalnızca seçtiğim .testsettings dosyaları.

      Altında Otomatikleştirilmiş testler, select Test derlemesininve [...] satır sonunda.İçinde Ekle/Düzenle testi çalıştırmak iletişim kutusunda, küme Test Çalıştırıcısı için Visual Studio Test Çalıştırıcısı.

Sonuçları yapı raporu Özet bölümünde görünür.

Örnek .runsettings dosyası

Bu kodu kopyalayın ve kendi gereksinimlerinize uyacak şekilde düzenleyin.Bu varsayılan .runsettings dosyasıdır.

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

Ayrıca bkz.

Kavramlar

Kod birimi sınamaları kullanarak doğrulama

Diğer Kaynaklar

Kod kapsamı belirlemek ne kadar kod kullanılarak test edilmiştir