gpt4 book ai didi

c# - ExpectedException 属性不起作用

转载 作者:太空狗 更新时间:2023-10-29 19:42:49 32 4
gpt4 key购买 nike

我在使用 Visual Studio 单元测试框架时遇到了一个非常奇怪的情况。装饰为 [TestMethod, ExpectedException(typeof(InvalidOperationException))] 失败并出现 System.InvalidOperationException 的测试。

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

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

已验证 ExpectedExceptionAttributeInvalidOperationException 均未被覆盖。不确定在这里还能尝试什么...


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

最佳答案

我个人不使用 ExpectedExeption 属性,因为它不允许您准确指定预期哪个语句会引发异常。例如,您的测试设置代码中可能存在一些问题,它会抛出一个 InvalidOperationExeption,这在您的测试中没有被执行,并且您的测试突然通过了。此外,它不允许您检查异常,例如断言它具有正确的消息。

我使用下面的方法

[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");
}

关于c# - ExpectedException 属性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15959421/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com