是否有一些 Assert 方法可用于对方法是否引发异常进行单元测试? [复制]
Posted
技术标签:
【中文标题】是否有一些 Assert 方法可用于对方法是否引发异常进行单元测试? [复制]【英文标题】:Is there some Assert method which can be used for unit test on whether a method throws an exception? [duplicate] 【发布时间】:2017-11-03 03:18:18 【问题描述】:在 C# 中,我有一个方法可以在某个条件为真时抛出异常。我应该编写一个单元测试方法来验证这一点。
由于被测试的方法没有返回布尔值,我不能使用Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsTrue
方法。我可以使用哪种断言方法?谢谢。
【问题讨论】:
@sasha_gud 是的,但那些答案已经过时了 如果您愿意使用断言库,请参阅***.com/questions/40543708/… 【参考方案1】:使用Assert.Throws
,像这样:
var ex = Assert.Throws<ArgumentNullException>(() => My.Method(null));
Assert.Equals("foo", ex.ParamName);
这适用于 XUnit 和更高版本的 MSTest(将 MSTest 安装为 NuGet package 以获得最新版本)
【讨论】:
谢谢。 MSTest 和Microsoft.VisualStudio.TestTools
是分开的吗?
@Tim MSTest 曾经(现在仍然是)随 Visual Studio 一起提供 - Visual Studio 附带的 Microsoft.VisualStudio.TestTools
程序集是旧版本的 MSTest(不包括 Assert.Throws
方法)。创建测试项目时,较新版本的 Visual Studio 会引用 NuGet 包,而不是那些程序集。以上是关于是否有一些 Assert 方法可用于对方法是否引发异常进行单元测试? [复制]的主要内容,如果未能解决你的问题,请参考以下文章