C# 如何使用dotcover覆盖预期异常?

C# 如何使用dotcover覆盖预期异常?,c#,visual-studio-2013,dotcover,C#,Visual Studio 2013,Dotcover,我使用Dotcover来查看我的单元测试对生产代码的覆盖率。它工作得很好,除了当我试图测试抛出的异常时,这是我的问题,我在那里做了什么错误。我已经尝试了下面两种变体,只获得了92%或89%的覆盖率 关于单元测试框架的一点说明:除了VisualStudio自带的单元测试框架之外,我没有使用任何外部/附加框架 [TestMethod] [ExpectedException(typeof(FormatException), "No exception or exception of wrong typ

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

关于单元测试框架的一点说明:除了VisualStudio自带的单元测试框架之外,我没有使用任何外部/附加框架

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

我也尝试过在捕获中使用formatexception和其他捕获,但我得到的最高捕获率仍然是92%,否则甚至会降低到16%。就像我在这里提到的问题,我做错了什么

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

private int _DatabaseID;

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

“我使用Dotcover来覆盖我的单元测试”-为什么?覆盖率通常用于检查您的测试是否覆盖了所有生产代码。。。你希望用这个来实现什么?查找应该是测试但缺少属性的方法?(顺便说一句,您使用的任何测试框架都不包括
Assert.Throws(Action)
或类似的东西吗?这通常是一种更好的方法。)作为测试框架,我使用的是普通的Visual studio 2013单元测试(因此没有外部测试框架)。“cover unittests with dotcover”直接取自鼠标右键的菜单点单击^^^(正如您提到的,单元测试覆盖了多少生产代码)我将尝试一个断言,几分钟后将结果发布到问题中。嗯,VS的正常单元测试没有断言。在VS 2013中抛出?仅仅因为上下文菜单上有可用的内容并不意味着这是一个好主意。通过查看单元测试项目中的覆盖率,您试图实现什么?如果MSTest没有Assert.Throws,我会感到惊讶,但这是可能的:(上下文菜单的措辞非常糟糕。这里的顺序是我必须尽可能实现100%的覆盖率。当生产代码显示100%,而unittests显示96%时,我感到惊讶(在测试中,例外情况只显示了80%甚至更糟的16%覆盖率)因此,我正在查看这是否是dotcover固有的,或者在这些方面是否有我做错的事情(至少从dotcovers pov).For Assert:我尝试使用Assert.T,但autocomplete在Microsoft.VisualStudio.TestTools.UnitTesting.Assert中没有提到以T开头的内容
private int _DatabaseID;

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