NUnit 抛出的正确语法

本文关键字:语法 NUnit | 更新日期: 2023-09-27 18:37:00

我需要编写一个测试来验证创建对象并传入空参数是否会引发ArgumentNullException

这是我所拥有的:

[Test]
public void ThrowsOnNullDependency()
{
    Assert.Throws(() => new FileService(null), Throws.Exception.TypeOf<ArgumentNullException>());
}

我得到以下例外。我见过几个不同的网站和 SO 答案,它们似乎都使用了 NUnit 的不同功能和语法。检查 NUnit3 是否引发异常的正确方法是什么?

CS1503 参数 2:无法从"NUnit.Framework.Constraint.ExactTypeConstraint"转换为"NUnit.Framework.TestDelegate"

CS1660 无法将 lambda 表达式转换为类型"IResolveConstraint",因为它不是委托类型

NUnit 抛出的正确语法

如果您只想检查是否抛出异常,那么以下任一都可以:

Assert.Throws<ArgumentNullException>(() => new FileService(null));
Assert.Throws(typeof(ArgumentNullException), () => new FileService(null));

如果您确实想使用 ThrowsConstraint 来更好地控制检查,那么语法将是这样的,因为您将Assert.That与约束一起使用:

Assert.That(() => new FileService(null), Throws.TypeOf<ArgumentNullException>());