ExpectedException属性不起作用

使用Visual Studio单元测试框架的情况非常奇怪。 装饰为[TestMethod, ExpectedException(typeof(InvalidOperationException))] 失败,并显示System.InvalidOperationException

如果我从测试中删除所有代码(以确保它不会抛出任何东西) - 它会通过。 就好像ExpectedException甚至不存在...

如果我用一个虚拟测试开始一个空项目,它InvalidOperationException抛出InvalidOperationException它完全按预期工作。

验证ExpectedExceptionAttributeInvalidOperationException都被覆盖。 不知道还有什么要尝试在这里...


编辑:通过删除对Microsoft.VisualStudio.QualityTools.UnitTestFramework v10.1的引用并添加v10.0来修复该问题。 不知道为什么这件事很重要,或者为什么其他属性工作得很好。


就我个人而言,我不使用ExpectedExeption属性,因为它不允许您准确指定哪个语句预计会抛出异常。 例如,在测试设置代码中可能会出现一些问题,这些代码会抛出一个InvalidOperationExeption,这个InvalidOperationExeption在您的测试中未被执行,并且突然通过了您的测试。 此外,它不允许你检查Exeception,就像声明它有正确的信息。

我使用以下方法

[TestMethod]
public void Test()
{
    //Arrange
    var sut = new ClassToTest();
    sut.MethodThatShouldNotThrow();

    //Act
    try
    {
         sut.MethodToTestThatShuldThrow();
    }
    catch(InvalidOperationException ioex)
    {
        //Assert, here you could do additional Asserts on the Exception's properties      
        return;
    }
    Assert.Fail("Expected InvalidOperationException was not thrown");
}
链接地址: http://www.djcxy.com/p/12745.html

上一篇: ExpectedException attribute is not working

下一篇: how to parse xml file from Sdcard in Android