我有以下测试:
[Test]
public void GrantResourceOwnerCredentials_NullClientID_ThrowsArgumentNullException()
{
Assert.Throws<ArgumentNullException>(() =>{ new ApplicationOAuthProvider(null,null); });
}
测试通过,但是当我运行代码覆盖时,它会突出显示
new ApplicationOAuthProvider(null,null);
as“Coverage Partially Touched Area”。
我该如何解决?
顺便说一下,我是单元测试/代码覆盖率的新手,所以对我来说很容易。
由于
答案 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“完全覆盖”。