Mat*_*t W 4 c# resharper nunit unit-testing
为什么这段代码抛出异常而不是通过测试?
public static int ThrowsSomething(string name)
{
if (name == null)
throw new ArgumentNullException(nameof(name), "can't be null because that's silly");
return -1;
}
[Test]
public void WindowTest()
{
Assert.That(ThrowsSomething("dave"), Is.EqualTo(-1));
Assert.That(ThrowsSomething(null), Throws.TypeOf<ArgumentNullException>());
}
Run Code Online (Sandbox Code Playgroud)
单元测试会话窗口显示:
WindowTest [0:00.066]失败:System.ArgumentNullException:不能为null因为那是愚蠢的
Visual Studio 2015与ReSharper Ultimate 2016.3和NUnit 3.6.1
测试失败,因为抛出的异常未被捕获并阻止测试运行完成.
使用Assert.Throws<>断言抛出的异常
[Test]
public void WindowTest() {
Assert.That(ThrowsSomething("dave"), Is.EqualTo(-1));
Assert.Throws<ArgumentNullException>(() => ThrowsSomething(null));
}
Run Code Online (Sandbox Code Playgroud)
或使用委托,以便断言可以捕获和处理异常.
Assert.That(() => ThrowsSomething(null), Throws.Exception.TypeOf<ArgumentNullException>());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
264 次 |
| 最近记录: |