c# .net exception nunit testcase

c# - ¿Probando excepciones con el atributo[TestCase] en NUnit 3?



.net exception (1)

ExpectedException habría sido el método correcto para NUnit 2.X, pero se eliminó de NUnit 3.

Hay varios fragmentos de discusión en el Grupo de Google NUnit y el grupo de Dev equivalentes, pero parece que se tomó la decisión de que generalmente es un mejor patrón de diseño para probar los resultados esperados y las excepciones en métodos separados. ( link )

La única forma de hacerlo en NUnit 3, sería dividirlo en dos pruebas separadas. (Confirmado en una pregunta similar respondida por el equipo central de NUnit, here .)

[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)); } [TestCase(-1, 0)] public void TestDivideThrows(double a, double b) { Assert.That(() => _uut.Divide(a, b), Throws.TypeOf<ArgumentException>()); }

¿Cómo puedo probar las excepciones en un TestCase con NUnit3?

Digamos que tengo un método Divide(a,b) definido de la siguiente manera:

public double Divide(double a, double b) { if(Math.Abs(b) < double.Epsilon) throw new ArgumentException("Divider cannot be 0"); return a/b; }

Quiero probar este método utilizando los casos de prueba NUnit 3.0, así que tal vez tenga:

[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)); }

¿Hay una manera de especificar un caso de prueba que haga que Divide () arroje una ArgumentException y de alguna manera tenga esto como el resultado esperado, por ejemplo, algo como:

[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)); }

(Por supuesto que podría definir un método de prueba separado y usar Assert.Throws() en este, por lo que esto es simplemente por curiosidad)