私のソリューションは、「ProjectName」を含む「ProjectName」というプロジェクトで設定されています。テストには、単体テストが含まれています。 VS 2012(MSテスト)のコードカバレッジ分析からテストプロジェクトを除外し、ExcludeFromCodeCoverage
属性を各テストクラスに追加することでこれを正常に実行しました こちら 。
テストクラスの数が増えているので、テストアセンブリ全体を除外するのはいいことです。 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>
しかし、再び、空の結果が表示されます。空の(または存在しない)Includeブロックには、Excludeブロックと一致しない限りlessを除いて、デフォルトですべてが含まれるという印象を受けたので、これは厳密に必要だと思います。
誰かが私を正しい方向に向けることができますか?私は この他の質問 から、テストを除外しようとしているのは私だけではないが、アセンブリレベルでそれを実行したいと考えています [〜#〜] msdn [〜#〜 ] は私ができることを示唆しているようです。
それが言及されたように、ピリオドの問題との関連があります ここ 。除外セクションをこれに変更した場合
<ModulePath>.*tests.dll</ModulePath>
<ModulePath>.*Tests.dll</ModulePath>
またはこれ
<ModulePath>.*\.tests\..*</ModulePath>
<ModulePath>.*\.Tests\..*</ModulePath>
うまくいくよ
プロジェクトdllを除外するか、プロジェクト名自体を使用して除外することもできます。例えば。 -
<ModulePaths>
<Exclude>
<ModulePath>Fabrikam.Math.UnitTest.dll</ModulePath>
<!-- You can add more ModulePath nodes here. -->
</Exclude>
</ModulePaths>
この MSDNリンク は便利です。