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でも仕様が違うということなんだな。