我使用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);
}
}
我也尝试过捕捉中的一种形态感染,并且还有另一种捕获方式,但我获得的最高值仍然是92%,其他方式甚至低于16%。所以如上所述我的问题是我在那里做错了什么?
作为关于myclass的其他信息,它具有以下属性和私有变量:
private int _DatabaseID;
public int DatabaseID
{
get { return _DataBaseID; }
set { if (value != 0) {_DatabaseID = value; } else { throw new FormatException ("haha"); }
}