NUnit 2016 Throws.TypeOf
NUnit 2016 Throws.TypeOf
为什么这段代码抛出异常而不是通过测试?
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>());
}
单元测试会话 window 显示:
WindowTest [0:00.066] Failed: System.ArgumentNullException : can't be
null because that's silly
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));
}
或使用委托,以便异常可以被断言捕获和处理。
Assert.That(() => ThrowsSomething(null), Throws.Exception.TypeOf<ArgumentNullException>());
为什么这段代码抛出异常而不是通过测试?
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>());
}
单元测试会话 window 显示:
WindowTest [0:00.066] Failed: System.ArgumentNullException : can't be null because that's silly
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));
}
或使用委托,以便异常可以被断言捕获和处理。
Assert.That(() => ThrowsSomething(null), Throws.Exception.TypeOf<ArgumentNullException>());