1

最近、JetBrains の DotCover を評価していて、興味深い質問にたどり着きました。

TDD に従う場合:

  • 希望する理想的なインターフェイスに対するテストを作成します。
  • テストに合格する最も単純な実装を作成します。
  • 100% を示す DotCover を実行します。
  • 次に、重複/リファクタリングを削除します。

リファクタリングのプロセス中に一部の機能を独自のクラスに移動し (たとえば、DRY または SRP に準拠するために)、DotCover を再実行すると、新しいクラスを直接テストしなくなるため、カバレッジ % が低下します。 .

これは、TDD の原則に従って絶対的な文字を使用しているため、少し奇妙に思えます。コード内の任意の行を変更またはコメントアウトすると、テストが中断されますが、カバーされていないと報告されます。

何か不足していますか?

4

2 に答える 2

2

DotCover では、ユニットをユニットとしてテストする必要がある場合があるため、間接テストのペナルティが発生します。また、テスト対象のシステムのみをテストで考慮する必要があるという議論には、いくつかのメリットがあります。クラスを抽出して呼び出し側でテストする場合、実際には呼び出し側をテストしているので、(ほぼ間違いなく) 新しいクラスをモックする必要があります。また、独立したユニットとしてテストする新しいクラスの真の単体テストを行う必要があります。

于 2013-06-15T00:56:20.543 に答える
0

これにより、単体テストと統合テストの定義の議論が開かれると思います。

フィルターを使用して、コード カバレッジから領域を除外できます: http://blogs.jetbrains.com/dotnet/2010/07/filtering-with-dotcover/

お役に立てれば。

于 2013-06-16T16:18:39.380 に答える