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",因为它不是委托类型
如果您只想检查是否抛出异常,那么以下任一都可以:
Assert.Throws<ArgumentNullException>(() => new FileService(null));
Assert.Throws(typeof(ArgumentNullException), () => new FileService(null));
如果您确实想使用 ThrowsConstraint 来更好地控制检查,那么语法将是这样的,因为您将Assert.That
与约束一起使用:
Assert.That(() => new FileService(null), Throws.TypeOf<ArgumentNullException>());