断言从 NUnit 到 MS TEST 的异常
我有一些测试,我正在检查异常中的参数名称。 我如何在 MS TEST 中写这个?
ArgumentNullException exception =
Assert.Throws<ArgumentNullException>(
() => new NHibernateLawbaseCaseDataLoader(
null,
_mockExRepository,
_mockBenRepository));
Assert.AreEqual("lawbaseFixedContactRepository", exception.ParamName);
我一直希望有更简洁的方法,这样我就可以避免在测试中使用 try catch 块。
I have some tests where i am checking for parameter name in exception.
How do i write this in MS TEST?
ArgumentNullException exception =
Assert.Throws<ArgumentNullException>(
() => new NHibernateLawbaseCaseDataLoader(
null,
_mockExRepository,
_mockBenRepository));
Assert.AreEqual("lawbaseFixedContactRepository", exception.ParamName);
I have been hoping for neater way so i can avoid using try catch block in the tests.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用上面的扩展方法作为测试助手。以下是如何使用它的示例:
You can use the extension method above as a test helper. Here is an example of how to use it:
无耻的插件,但我编写了一个简单的程序集,使用 nUnit/xUnit 风格的 Assert.Throws() 语法,在 MSTest 中使断言异常和异常消息更容易且更具可读性。
您可以使用以下命令从 Nuget 下载软件包:PM> Install-Package MSTestExtensions
或者您可以在此处查看完整的源代码: https://github.com/ bbraithwaite/MSTestExtensions
高级指令,下载程序集并从 BaseTest 继承,并且可以使用 Assert.Throws() 语法。
Throws 实现的主要方法如下所示:
更多信息 这里。
Shameless plug, but I wrote a simple assembly that makes asserting exceptions and exception messages a little easier and more readable in MSTest using Assert.Throws() syntax in the style of nUnit/xUnit.
You can download the package from Nuget using: PM> Install-Package MSTestExtensions
Or you can see the full source code here: https://github.com/bbraithwaite/MSTestExtensions
High level instructions, download the assembly and inherit from BaseTest and you can use the Assert.Throws() syntax.
The main method for the Throws implementation looks as follows:
More info here.
由于 MSTest
[ExpectedException]
属性不检查消息中的文本,因此最好的选择是尝试...捕获异常 Message / ParamName 属性并设置 Assert。Since the MSTest
[ExpectedException]
attribute doesn't check the text in the message, your best bet is to try...catch and set an Assert on the exception Message / ParamName property.