32

私のソリューションは、「ProjectName」と「ProjectName」という名前のプロジェクトでセットアップされています。単体テストを含むテスト。VS 2012 (MS Test) でのコード カバレッジ分析からテスト プロジェクトを除外したいのですが、ここでExcludeFromCodeCoverage説明されているように、各テスト クラスに属性を追加することでこれを行うことができました。

テスト クラスの数が増えているため、Test アセンブリ全体を除外するとよいでしょう。そのMSDNリンクにも記載されている.runsettingsファイルを使用したいのですが、うまくいかないようです。

ここに私の .runsettings ファイルがあります:

<?xml version="1.0" encoding="utf-8"?>
<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>
            <ModulePaths>
              <Exclude>
                <ModulePath>.*tests.*</ModulePath>
                <ModulePath>.*Tests.*</ModulePath>>
              </Exclude>
            </ModulePaths>
          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

これにより、コード カバレッジに対して空の結果が生成されます。<Exclude>ブロック全体をコメント アウトすると、テストを含むソリューションのすべてのプロジェクトでコード カバレッジが得られます (予想どおり、runSettings ファイルの追加が原因ではないことを確認したかっただけです)。自体の問題)。

私は追加しようとしました:

<Include>
  <ModulePath>.*\.dll$</ModulePath>
  <ModulePath>.*\.exe$</ModulePath>
</Include>

しかし、やはり空の結果が表示されます。Exclude ブロックと一致しない限り、空の (または存在しない) Include ブロックには既定ですべてが含まれるという印象を受けていたので、これは厳密には必要ではないと思います。

誰かが私を正しい方向に向けることができますか? この他の質問から、テストを除外しようとしているのは私だけではないことがわかりますが、アセンブリレベルでそれを行いたいと考えており、MSDNはできることを示唆しているようです。

4

2 に答える 2

51

ここで述べたように、時代の問題との関連があります。除外セクションをこれに変更すると

<ModulePath>.*tests.dll</ModulePath>
<ModulePath>.*Tests.dll</ModulePath>

またはこれ

<ModulePath>.*\.tests\..*</ModulePath>
<ModulePath>.*\.Tests\..*</ModulePath>

それはうまくいく

于 2013-09-09T06:32:42.290 に答える