我有一个非常奇怪的情况使用Visual Studio单元测试框架.测试装饰为[TestMethod, ExpectedException(typeof(InvalidOperationException))] 失败与System.InvalidOperationException.
如果我从测试中删除所有代码(以确保它不会抛出任何东西) - 它会通过.好像ExpectedException甚至没有......
如果我开始一个虚拟测试的空项目,除了抛出InvalidOperationException它完全按预期工作.
验证既ExpectedExceptionAttribute不会InvalidOperationException被覆盖也不会被覆盖.不知道还有什么可以尝试...
编辑:通过删除对Microsoft.VisualStudio.QualityTools.UnitTestFrameworkv10.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");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2344 次 |
| 最近记录: |