web-dev-qa-db-ja.com

TeamCityでdotCoverの対象からタイプとメソッドを除外するにはどうすればよいですか?

TestDriven.NetとVisual Studioカバレッジ機能を使用してテストカバレッジを確認した既存のC#4プロジェクトがあります。つまり、コンテキストメニューから[Test With]-> [Coverage]を選択します。

プロジェクトには、カバーしたくないコードがいくつか含まれており、それらのタイプとメソッドに[ExcludeFromCodeCoverage]を追加することで解決しました。

TeamCityを6.0.3にアップグレードしました。NUnitビルドステップにdotCoverカバレッジを追加しました。

(フィルター)セクションでNHibernateなどの外部アセンブリのカバレッジを削除することに成功しました(カバレッジが必要なアセンブリを明示的に示すことで)が、対象のアセンブリから型とメソッドを除外する方法に苦労しています。

enter image description here

56
Martin R-L

わかりました、マーティン、わかりました!フィルター構文をランダムに突っ込むのに1時間しかかかりませんでした...ドキュメントにこのようなフィルターを追加するように言われたとき

+:myassembly=*;type=*;method=***

彼らは本当にこれを意味します... <>は完全にユーザーによって置き換えられ、その他はすべてリテラルです

+:<myassembly>;type=<filter>;method=<filter>

したがって、私が欲しかったフィルターは、(アセンブリの束からの)単一のアセンブリを含め、そのアセンブリからいくつかの名前空間を除外することでした。私が書いた

+:Omnyx.Scanner
-:Omnyx.Scanner;type=Omnyx.Scanner.Simulation.*
-:Omnyx.Scanner;type=Omnyx.Scanner.ToolsCommon.*
62

dotCover Tips&Tricks ページをご覧ください。アセンブリ全体を除外する方法と同様に、フィルターセクションで除外を設定できるようです。

DoStuffライブラリにあるクラスMyStuffに含まれるMyAwesomeAssemblyというメソッドを無視したいとします。次に、dotCover XMLは次のようになります。

<Filters>
  <ExcludeFilters>
     <FilterEntry>
       <ModuleMask>MyAwesomeAssembly</ModuleMask>
       <ClassMask>MyStuff</ClassMask>
       <FunctionMask>DoStuff</FunctionMask>
     </FilterEntry>
  </ExcludeFilters>
</Filters>

免責事項:私はdotCoverを使用しないので、これが実際に機能するかどうかは100%わかりません。

2
Adam Lear

これは、TeamCityのドキュメントがフィルターオプションについて言っていることです。

次の構文を使用して、1行に1つずつプロファイルするアセンブリを指定します:+:myassembly = ; type =; method = *

-:myassemblyを使用して、アセンブリをコードカバレッジから除外します。ここではアスタリスクのワイルドカード(*)がサポートされています。

0
stealf