VS2013代码覆盖率

时间:2015-02-11 16:13:27

标签: visual-studio-2013 code-coverage

我有以下测试:

[Test]
public void GrantResourceOwnerCredentials_NullClientID_ThrowsArgumentNullException()
    {   
        Assert.Throws<ArgumentNullException>(() =>{ new ApplicationOAuthProvider(null,null); }); 

    }

测试通过,但是当我运行代码覆盖时,它会突出显示

new ApplicationOAuthProvider(null,null);

as“Coverage Partially Touched Area”。

我该如何解决?

顺便说一下,我是单元测试/代码覆盖率的新手,所以对我来说很容易。

由于

1 个答案:

答案 0 :(得分:0)

当您看到“部分触摸”的结果时,这意味着可以通过方法遍历多个代码路径(例如通过if块,空检查等) ,并且您的测试只执行了一条路径。

例如,如果您有以下方法:

public string IsThisEvenOrOdd(int number)
{
  return (number % 2 == 0) ? "Even" : "Odd";
}

你写下面的单元测试:

public string IsThisEvenOrOdd_PositiveEvenNumber_ReturnsEven()
{
    var number = 2;
    var expected = "Even";

    var actual = IsThisEvenOrOdd(number);

    Assert.AreEqual(expected, actual);
}

如果您运行该测试,它应该会成功。但是,它只测试一条路径 - “偶数”路径。您需要编写至少一个其他测试来测试“奇数”结果,然后该方法才会显示为MSTest“完全覆盖”。