10

答えはノーだと思いますが、とにかく尋ねます...

TL;DR

[ExcludeFromCodeCoverage]属性を使用してカバレッジ分析からクラスまたはメソッドを除外できることはわかっていますが、メソッドの一部のみを除外する方法はありますか?

具体例

int.MaxValue要素のシーケンスを遅延生成するメソッドがあります。

private static IEnumerable<TElement> GenerateIterator<TElement>(Func<int, TElement> generator)
{
    for (int i = 0; i < int.MaxValue; i++)
    {
        yield return generator(i);
    }
}

実際には、完全に列挙されることはないため、メソッドの最後に到達することはありません。そのため、DotCover はメソッドの 20% がカバーされていないと見なし、閉じ括弧をカバーされていないものとして強調表示します (これreturn falseは、生成されたMoveNextメソッドに対応します)。

シーケンス全体を使用するテストを作成することもできますが、特にカバレッジが有効になっていると、実行に非常に時間がかかります。

したがって、最後の命令をカバーする必要がないことを DotCover に伝える方法を見つけたいと思います。

注:すべてのコードを単体テストでカバーする必要がないことはわかっています。一部のコードはテストできない、またはテストする必要がないため、通常は[ExcludeFromCodeCoverage]属性を持つコードを除外します。しかし、コードのテストされていない部分を見つけやすくなるため、テストするコードのカバレッジを 100% 報告してもらいたいと思っています。テストするものが何もないことがわかっているときに、80%のカバレッジを持つメソッドを持つことは非常に面倒です...

4

2 に答える 2