次の方法で共有


コード カバレッジ分析のカスタマイズ

既定では、Visual Studio 2012 のコード カバレッジのツールは、単体テストの間に読み込まれているすべてのソリューション アセンブリ (.exe/.dll) を分析します。ここでは、多くの場合、適したため、この既定値をそのまま使用することをお勧めします。詳細については、「コード カバレッジを使用した、テストされるプロジェクトのコード割合の確認」を参照してください。

コード カバレッジの動作をカスタマイズする前に、いくつかの代替手段を検討する:

  • 私は、テスト コードをコード カバレッジ結果から除外し、アプリケーション コードだけ含める必要があります。

    テスト クラスに ExcludeFromCodeCoverage Attribute を追加します。

  • 私は、[マイ ソリューションの一部ではないアセンブリを使用します。

    これらのアセンブリの .pdb ファイルを取得し、同じフォルダーにアセンブリの .dll ファイルと、それらをコピーします。

コード カバレッジの動作をカスタマイズするには、このトピックの最後にあるサンプル をコピーし、ソリューションにファイル拡張子 .runsettings を使用してそれを追加します。次に、独自のニーズに、[テスト] のメニューで、を選択します [テストの設定][Select Test Settings] ファイルを編集します。このトピックの残りの部分は、この手順について詳しく説明します。

.runsettings ファイル

高度なコード カバレッジの設定が .runsettings ファイルで指定します。これは、単体テスト ツールで使用する構成ファイルです。これは推奨 このトピックの最後にあるサンプル コピーして独自のニーズに合わせて、それを編集します。

  • My が Visual Studio 2010 で使用した .testsettings ファイルに何が発生したか。

    Visual Studio 2010 では、.testsettings ファイルは、MSTest のフレームワークに基づいて単体テストにのみ適用されます。Visual Studio 2012 では、テスト ツールは、NUnit などの MSTest、および他のフレームワークと xUnit だけでなく、適用します。net」と入力します。.testsettings は、これらのファイルを使用しません。.runsettings ファイルは、すべてのテスト フレームワークを使用する方法でテスト ツールをカスタマイズするように設計されています。

コード カバレッジをカスタマイズするには、ソリューションに .runsettings ファイルを追加する必要があります:

  1. 拡張機能 [.runsettings]を使用してソリューション項目として .xml ファイルを追加します:

    ソリューションのショートカット メニューのソリューション エクスプローラーで、[追加][新しいアイテム] を選択し、[XML ファイル] を選択します。CodeCoverage.runsettingsなどの名前の末尾ファイルに保存します。

  2. このトピックの最後にあるサンプルで指定された内容を追加し、必要に応じて次のセクションで説明するように、カスタマイズします。

  3. [テスト] で、メニューの [テストの設定][テスト設定ファイルの選択] を選択し、ファイルを選択します。

  4. これで [テスト][コード カバレッジの分析] を実行 [.runsettings] このファイルは、の動作を制御します。

  5. カスタム設定を断続的に回転、[テスト] ファイル、[テストの設定] メニューのを選択します。選択解除する場合は。

カスタム設定ファイルを持つテスト設定メニュー

単体テストのそのほかの部分は、同じ .runsettings ファイルで構成できます。詳細については、「単体テストを使用したコードの検証」を参照してください。

JJ159530.collapse_all(ja-jp,VS.110).gifシンボル検索パスの指定

コード カバレッジはシンボル (.pdb ファイル) をようにアセンブリを持つことができる必要です。ソリューションによってビルド アセンブリに対してシンボル ファイルは一般にバイナリ ファイルがあり、コード カバレッジは自動的に動作します。ただし、場合によっては、コード カバレッジ分析に参照アセンブリを含める場合があります。このような場合、.pdb ファイルは、binary に隣接していない可能性があります .runsettings ファイルにシンボル検索パスを指定できます。

         <SymbolSearchPaths>              
               <Path>\\mybuildshare\builds\ProjectX</Path>
               <!--More paths if required-->
         </SymbolSearchPaths>
Caution メモ注意

シンボルの解決は、特に、多数のアセンブリでリモート ファイルの位置を使用するときの時間がかかることができます。したがって、バイナリ (.dll、.exe) ファイルと同じローカルな位置にリモート .pdb ファイルをコピーします。

JJ159530.collapse_all(ja-jp,VS.110).gif除外し、含まれていること

コード カバレッジ分析から指定されたアセンブリを除外できます。次に例を示します。

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

別の方法として、アセンブリを含める必要があるかを指定できます。ソリューションにアセンブリを追加するときにこの方法には、リストに追加するのを忘れないでがある短所があります:

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

<Include> が空の場合、コード カバレッジは処理 <Exclude> の一覧の句に一致する項目を除き、すべてのアセンブリ (.dll、.exe ファイル) .pdb のどのファイルが見つかりませんでした。ことができるか読み込まれ、含まれています。

Include は Excludeの前に処理されます。

JJ159530.collapse_all(ja-jp,VS.110).gif[正規表現]

ノードの[正規表現が含まれ、除外します。詳細については、「Visual Studio での正規表現の使用」を参照してください。正規表現は、ワイルドカードと同じではありません。特に次の点に注意してください。

  1. .* は、一連の文字と一致します。

  2. \。 は、"に一致します。" )

  3. \ (\) のかっこ "( )"

  4. \\ は一致するファイルのパス区切り記号 "" に\

  5. [^] は文字列の先頭に一致します

  6. $ は、文字列の末尾と一致します

すべての一致がケースと小文字が区別されません。

次に例を示します。

<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>
Caution メモ注意

エスケープされないなどの正規表現にエラーが、かっこと一致しない場合、コード カバレッジ分析は実行されません。

JJ159530.collapse_all(ja-jp,VS.110).gif要素を含めるか、除外そのほかの方法

例については このトピックの最後にあるサンプル を参照してください。

  • アセンブリ ファイルのパスで指定されたModulePath –のアセンブリ。

  • CompanyName –は、会社の属性によってアセンブリと一致します。

  • PublicKeyToken –は公開キー トークンによって署名されたアセンブリと一致します。たとえば、すべての Visual Studio コンポーネントと拡張子に一致するように、<PublicKeyToken>^B03F5F7F11D50A3A$</PublicKeyToken>を使用します。

  • Source –は、それが定義されたソース ファイルのパス名で要素を検索します。

  • Attribute –は、特定の属性がアタッチされる要素と一致します。名前の末尾に "属性" を含む属性の完全名を指定します。

  • Function –は完全修飾名では、プロシージャ、関数、またはメソッドに一致します。

関数名の一致

次の正規表現は、名前空間、クラス名、メソッド名、およびパラメーター リストを含む関数の完全修飾名と一致する必要があります。次に例を示します。

  • または、C 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>

移動がテストするとき、.runsettings のファイルを指定する方法

JJ159530.collapse_all(ja-jp,VS.110).gifVisual Studio Test runsettings をカスタマイズするには

[テスト][テストの設定][テスト設定ファイルの選択] を選択し、.runsettings のファイルを選択します。ファイルは、テストの設定のメニューに表示され、それを選択するか、または[キャンセルできます。選択されているときは、の .runsettings ファイルは [コード カバレッジの分析] を使用するたびに適用します。

JJ159530.collapse_all(ja-jp,VS.110).gifコマンド ラインのテストの実行設定をカスタマイズするには

コマンド ラインからテストを実行するには、vstest.console.exe を使用します。設定ファイルは、このユーティリティのパラメーターです。詳細については、「コマンド ラインからの VSTest.Console の使用」を参照してください。

  1. Visual Studio 開発者のコマンド プロンプトを起動:

    Windows [開始] で、[すべてのプログラム][Microsoft Visual Studio][Visual Studio ツール][Developer Command Prompt] を選択します。

  2. :実行

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

JJ159530.collapse_all(ja-jp,VS.110).gifビルド定義の実行設定をカスタマイズするには

チーム ビルドからコード カバレッジ データを取得できます。

ビルド定義に runsettings を指定します。

  1. 自分の .runsettings ファイルをチェックインすることを確認します。

  2. チーム エクスプローラーで、[ビルド] を開き、ビルド定義を追加または編集します。

  3. [プロセス] のページで、[自動テスト][Test Source][実行設定] を展開します。.runsettings のファイルを選択します。

    • ただし、[Test Assembly][Test Source] の代わりに表示されます。次に [実行設定] のフィールドに設定しようとしたときに、私は .testsettings のファイルを選択しない場合でもできます。

      [自動テスト] の[ [Test Assembly] は行の末尾に、[...] を選択します。[テストの実行の追加/編集] のダイアログ ボックスで、[Visual Studio テスト ランナー]テスト ランナー を設定します。

結果は、ビルドの概要レポートのセクションに表示されます。

サンプル ファイル .runsettings

このコードをコピーし、独自のニーズに合わせて編集します。これは既定 .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>

参照

概念

単体テストを使用したコードの検証

その他の技術情報

コード カバレッジを使用した、テストされるプロジェクトのコード割合の確認