如何使用NUnit3测试TestCase中的异常?
假设我的方法Divide(a,b)定义如下:
public double Divide(double a, double b)
{
if(Math.Abs(b) < double.Epsilon) throw new ArgumentException("Divider cannot be 0");
return a/b;
}
Run Code Online (Sandbox Code Playgroud)
我想使用NUnit 3.0测试用例来测试这个方法,所以也许我有:
[TestCase(-10, 2, -5)]
[TestCase(-1, 2, -0.5)]
public void TestDivide(double a, double b, double result)
{
Assert.That(_uut.Divide(a, b), Is.EqualTo(result));
}
Run Code Online (Sandbox Code Playgroud)
有没有办法指定一个测试用例,它会导致Divide()抛出ArgumentException,并以某种方式将其作为预期结果,例如:
[TestCase(-10, 2, -5)]
[TestCase(-1, 2, -0.5)]
[TestCase(-1, 0, ExpectedResult = TypeOf(ArgumentException)]
public void TestDivide(double a, double b, double result)
{
Assert.That(_uut.Divide(a, b), Is.EqualTo(result));
}
Run Code Online (Sandbox Code Playgroud)
(当然我可以定义一个单独的测试方法并Assert.Throws()在此使用,所以这纯粹是出于好奇)