如何获得完整的CodeCoverage?通过例外免费阻止

时间:2013-05-08 11:19:56

标签: c# visual-studio unit-testing mstest

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

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

    public void DoB()
    {
        ThrowException();
    }

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

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

2 个答案:

答案 0 :(得分:6)

您无法访问代码的返回true部分,因此您可以将其删除。在项目中有无法访问的代码是很糟糕的。或者因为函数DoA()未完成,您可以使用:[ExcludeFromCodeCoverage]

[ExcludeFromCodeCoverage]
public bool DoA()
{
    ThrowException();
    return true;
}

答案 1 :(得分:5)

这里无法全面报道。 throw之后的所有内容都是死代码。

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