【问题标题】:In MS C# Unit Testing, how to Assert that an ArgumentException occured?在 MS C# 单元测试中,如何断言发生了 ArgumentException?
【发布时间】:2011-03-15 10:58:24
【问题描述】:

如果我们做一个

throw new ArgumentException("Cannot do that");

您如何断言此ArgumentException 发生在 Microsoft 的测试框架中?

【问题讨论】:

标签: unit-testing exception-handling


【解决方案1】:

您可以使用[ExpectedException] 属性来装饰您的单元测试:

[ExpectedException(typeof(ArgumentException))]
[TestMethod]
public void Foo()
{
    throw new ArgumentException("foo");
}

不要问关于断言异常消息的问题:-)

【讨论】:

  • 这就是为什么单元测试不应该测试超过一件事。如果您执行了 Try / Catch 然后使用 Assert 处理捕获的异常怎么办?
  • 好吧,你当然可以这样做,但在这种情况下,你将编写,让我数一下,多写 7 行代码(如果你把 { 放在同一行,可能会少一点),而你编写的每一行代码都隐藏了一个潜在的错误并降低了代码的可读性,所以当你可以避免它时为什么要这样做:-)
猜你喜欢
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-26
  • 1970-01-01
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
相关资源
最近更新 更多