是否有一些 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 方法可用于对方法是否引发异常进行单元测试? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

是否有 C# 自动格式化程序可用于定义自定义格式化规则?

unittest断言方法的介绍

xunit的assert常用部分方法解释

是否有任何方法可用于更改 MFC(c++) 中 CListBox 的属性“右对齐文本”?

Junit——Assert断言

JUnit Test Assert