1

我正在使用 Dotcover 查看我的单元测试对我的生产代码的覆盖率。它工作得很好,除非我试图测试抛出的异常,这是我的问题,我在那里做错了什么。我已经尝试过以下两种变体,但仅获得 92% 或 89% 的覆盖率。

作为单元测试框架的注释:我没有使用外部/附加框架,而是使用 Visual Studio 本身附带的 Unittest 框架。

[TestMethod]
[ExpectedException(typeof(FormatException), "No exception or exception of wrong type thrown")]
public void TestException()
{
    new myClass().DatabaseID = 0;
}

[TestMethod]
public void TestException()
{
    try {
        new myClass().DatabaseID = 0;
        Assert.Fail
    }
    catch (Exception ex)
    {
        Assert.IsTrue (ex is FormatException);
    }
}

我还尝试过在 catch 中使用 formatexception 并在其周围设置另一个 catch,但我得到的最高值仍然是 92%,否则甚至更低到 16%。所以就像提到我的问题是我在那里做错了什么?

作为有关 myclass 的附加信息,它具有以下属性和私有变量:

private int _DatabaseID;

public int DatabaseID
{
     get { return _DataBaseID; }
     set { if (value != 0) {_DatabaseID = value; } else { throw new FormatException ("haha"); }
}
4

0 回答 0