Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ExpectedException属性不起作用_C#_Unit Testing - Fatal编程技术网

C# ExpectedException属性不起作用

C# ExpectedException属性不起作用,c#,unit-testing,C#,Unit Testing,我在使用VisualStudio单元测试框架时遇到了一个非常奇怪的情况。修饰为[TestMethod,ExpectedException(typeof(InvalidOperationException))]的测试失败系统。InvalidOperationException 如果我从测试中删除所有代码(以确保它根本不会抛出任何东西),它就会通过。这就好像ExpectedException根本不存在 如果我用一个虚拟测试启动一个空项目,该测试除了抛出invalidooperationexcepti

我在使用VisualStudio单元测试框架时遇到了一个非常奇怪的情况。修饰为
[TestMethod,ExpectedException(typeof(InvalidOperationException))]
的测试失败
系统。InvalidOperationException

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

如果我用一个虚拟测试启动一个空项目,该测试除了抛出
invalidooperationexception
之外什么都不做,它完全按照预期工作

已验证
ExpectedExceptionAttribute
InvalidOperationException
均未被覆盖。不知道这里还有什么可以尝试的


编辑:通过删除对
Microsoft.VisualStudio.QualityTools.UnitTestFramework
v10.1的引用并添加v10.0,修复了该问题。
不确定这有什么关系,或者为什么其他属性工作得很好。

就我个人而言,我不使用ExpectedExeption属性,因为它不允许您确切地指定要引发异常的语句。例如,您的测试设置代码中可能存在一些问题,该问题会抛出一个在测试中未执行的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");
}

如果在您的问题项目中,您从测试中删除了所有代码,只添加了一行来抛出InvalidOperationException,这是否按预期工作(即,即使它抛出异常也通过?@MattSmith否,测试失败。有趣的问题,很好的发现。