NCoverの網羅性

昨日のセミナーのくまやってみようリストの1、NCoverはどの網羅性を適用しているのかについて、調べたらこんな感じだったので、それに併せて適当なプログラムを書いてテストを書いてみた。


  • C0網羅(命令網羅):プログラムの命令が正常に実行されることをテスト「全命令数」
    • テストデータ:x=1,y=1
    • テスト項目:func1,func2
  • C1網羅(分岐網羅):プログラムの条件分岐が正常に実行されることをテスト「全分岐数」
    • テストデータ:x=1,y=1/x=2,y=2
    • テスト項目:branch1,branch3/branch2,branch4
  • C2網羅(条件網羅):分岐の組み合わせ経路が正常に実行されることをテスト「全経路数」
    • テストデータ:x=1,y=1/x=1,y=2/x=2,y=1/x=2,y=2
    • テスト項目:branch1,branch3/branch1,branch4/branch2,branch3/branch2,branch4

C0のテストコードでは、網羅率は100%行かず

[Test]
public void test1()
{
 int x = 1;
 int y = 1;
 Assert.AreEqual("b1f1b3f2", source.coverageTest(x, y));
}

C1用に1つテストコードを足すと、網羅率100%

[Test]
public void test2()
{
int x = 2;
int y = 2;
Assert.AreEqual("b2b4", source.coverageTest(x, y));
}

ということで、NCoverはC1のもよう。
Optionなどで変えられないかと思ったが見当たらず。ちなみに、JCoverだとIf文のみの場合はElseの方の分岐のテストがないと、100%にならない。ということは同じC1でも仕様が違うということなんだな。