我正在使用 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"); }
}