2

我有一个小问题。(在单元测试中) - 我对一个方法引发异常的类进行单元测试。结构是:

    public bool DoA()
    {
        ThrowException();
        return true;
    }

    public void DoB()
    {
        ThrowException();
    }

    private static void ThrowException()
    {
        throw new NotSupportedException();
    }

CodeCoverage 的结果不是 100% - 来自 DoA() 的 return 语句和右大括号以及来自 Do()B 的右大括号不在 codeCoverage 之下(因为它们没有达到)。我知道,这对于单元测试来说并不重要,因为我仍然检查了功能,但只是对我来说 - 它可能以及我如何达到完整的 CodeCoverage?也许通过排除?(可能更改测试代码/程序代码)

4

2 回答 2

6

您无法到达代码的 return true 部分,因此您可以将其删除。在您的项目中有无法访问的代码是不好的。或者因为函数 DoA() 没有完成,可以使用: [ExcludeFromCodeCoverage]

[ExcludeFromCodeCoverage]
public bool DoA()
{
    ThrowException();
    return true;
}
于 2013-05-08T11:24:11.430 回答
5

在这里不可能得到全面的报道。a 之后的所有内容throw都是死代码。

此外,代码(行)覆盖率并不是测试中的圣杯。是的,这很重要,但它不是一个最终标准。

于 2013-05-08T11:22:12.140 回答