在 MS C# 单元测试中,如何断言发生了 ArgumentException?
Posted
技术标签:
【中文标题】在 MS C# 单元测试中,如何断言发生了 ArgumentException?【英文标题】:In MS C# Unit Testing, how to Assert that an ArgumentException occured? 【发布时间】:2011-03-15 10:58:24 【问题描述】:如果我们做一个
throw new ArgumentException("Cannot do that");
您如何断言此ArgumentException
发生在 Microsoft 的测试框架中?
【问题讨论】:
可能重复 C#: How do I use Assert (Unit Testing) to verify that an exception has been thrown?. 【参考方案1】:您可以使用[ExpectedException]
属性来装饰您的单元测试:
[ExpectedException(typeof(ArgumentException))]
[TestMethod]
public void Foo()
throw new ArgumentException("foo");
不要问关于断言异常消息的问题:-)
【讨论】:
这就是为什么单元测试不应该测试超过一件事。如果您执行了 Try / Catch 然后使用 Assert 处理捕获的异常怎么办? 好吧,你当然可以这样做,但在这种情况下,你将编写,让我数一下,多写 7 行代码(如果你把
放在同一行,可能会少一点),而你编写的每一行代码都隐藏了一个潜在的错误并降低了代码的可读性,所以当你可以避免它时为什么要这样做:-)以上是关于在 MS C# 单元测试中,如何断言发生了 ArgumentException?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 C# 为 Snowflake 编写 MS 单元测试