特定のメソッドをカバーするテストを知りたいです。ただし、NCover はこの情報を提供しません。コードが TFS にないため、VSTS を使用したくありません。.NETでそれを行う方法/ツールはありますか?
2 に答える
基本的に、あなたがしなければならないことは、テストごとに1回テストカバレッジツールを実行し、そのテストのカバレッジベクトルを生成することです。数百のテストがある場合は、各テストのカバレッジを個別に収集できます。
次に、カバレッジベクトルNがメソッドをカバーしている場合、テストNがそのカバレッジを引き起こしました。
NCoverがメソッドのソースコードに対応する行の範囲に相互参照できるかどうか/どのようにNCoverが相互参照できるかはわかりません。
C#テストカバレッジツールの場合、インストルメンテーションツールは各カバレッジテストポイントの行番号範囲を生成し、すべてのメソッドの開始時にテストポイントが挿入されます。したがって、ファイル内のメソッドの行番号がわかっている場合は、技術的にエントリカバレッジポイント、つまりメソッドを構成するライン範囲、つまりメソッド内のすべてのテストカバレッジポイントを見つけることができます。このようなリストを使用すると、テストカバレッジベクトルがこれらのポイントに到達したかどうかを簡単に計算できます。したがって、十分に文書化されていませんが、このツールにはこのデータを提供するために必要な情報があります。あなたは私たちにさらなる文書を求めるか、これを行うのを手伝うことができます。
dotCover UI でそのようなサポートが提供されていると思いますが、この情報がビルド マシンから利用できるかどうかはよくわかりません。
OpenCoverはフォークの 1 つに取り組んでいます - これはプロジェクトの当初の目的の 1 つであり、1 回のテスト実行でこの目的に到達するように OpenCover の設計を推進しました - 乞うご期待...
最後に、Ira が言及しているように、テストを個別に実行し、NUnit/MSTest (選択したテスト ツールを挿入) で実行された単一のテストから( NCover、PartCover、OpenCoverなどのほとんどのカバレッジ ツールを使用して) カバレッジを取得できますが、セットアップ/ティアダウン アクションで発生したすべての情報も入手できます。