2

単体テストを作成したなど、単体テストヘルパーの拡張メソッドがいくつかありIsNotEmpty(this string str)ます。これらのテストの基本構造は、拡張メソッドが合格し、「良い」入力で期待される結果を返すことを確認するテストと、「悪い」入力で失敗例外がスローされることを確認するテストがあります。たとえば、上記のメソッドの失敗テストは次のようになります。

[TestMethod, Fails]
public void IsNotEmpty_Fails_On_Empty_String()
{
    "".IsNotEmpty();
}

Fails私が自分で書いた属性はどこにありますか?基本的にはのプロキシです[ExpectedException(typeof(AssertFailedException))]。したがって、上記のテストの唯一の行で例外がスローされることを明示的に期待しているため、メソッドが完全に実行されることは期待していません

しかし、ソリューションを右クリックして[Test with-> NCover]を選択すると、上記のようなすべてのメソッドで100%未満のコードカバレッジ*が得られ、末尾のブレースが赤で強調表示されます。

私がテスト方法が終了しないと言ったのに、なぜNCoverは私のテスト方法が終了しないと不平を言うのですか?

**)100%のコードカバレッジは必要ないと答えるすべての人のために:いいえ、私は100%のコードカバレッジを維持することについて特に心配していません。ただし、これらの場合、*重要なメソッドはリストに含まれていないものとして表示されるため、ツリーに完全にアクセスして、それがそれらだけであることを確認する必要があります。これが私がここで得ようとしている問題です。一般に100%のコードカバレッジではありません。

4

2 に答える 2

5

デバッグビルドを実行していますか?それがおそらく問題です。NCoverはデバッグブレークポイントを処理し、Microsoftは各メソッドの閉じ括弧に1つ追加して、メソッドを終了する前にそこにステップできるようにします。リリースモードで実行すると、これらの閉じ括弧が自動的に処理されます。

于 2010-07-22T00:00:41.247 に答える
-1

100%のコードカバレッジについて心配する必要はありません。できるだけ近づいてください。

100%のコードカバレッジを達成することは時間の無駄です。

重要なのは、カバーする必要のあるコードをカバーするテストに自信があるということです。

コードの70%のみをカバーする一連の堅実なテストを行うことができます。

あなたの最高のテストはおそらく数行しかカバーしていませんが、それらはほとんどのバグを防ぐものです。それらは「エッジケーステスト」です。それらがなければ、他のテストは役に立たないもの。テストスイート全体は役に立たない。なぜなら、それらが存在しなかった場合に通常コードベースに再導入され続けるであろう間違いをテストする場合だからである。

于 2010-07-20T19:31:37.850 に答える