Pregunta

Estoy usando NUNIT para pruebas unitarias (ejecutándose con TD.NET).

Al usar ASSERT.DOESNOTTROW, obtengo la excepción, pero sin ningún rastro de pila, lo que hace que sea más difícil identificar el problema de la raíz.

¿Cómo puedo abordar esto?

¿Fue útil?

Solución

los Assert.DoesNotThrow es redundante, si una prueba se lanza, la prueba fallará automáticamente sin que un afirmación. Para aclarar lo que está probado, en mi humilde opinión, es mejor transmitido en el nombre del método de prueba. Hay muy poco beneficio de documentación en el Assert.DoesNotThrow Sintaxis y, como señala, hace que sea más difícil arreglar las pruebas que fallan.

Además, si tiene una prueba muy larga con múltiples afirmaciones del Assert.DoesNotThrow Represa un papel importante para afirmar que el bloque de código correcto arrojó una excepción. Sin embargo, en este caso, una solución más adecuada es ver si la prueba puede acortarse y/o afirmar que se mudan a sus propias pruebas.

Otros consejos

Dudo que realmente responda a su pregunta, pero acortaría la prueba a una sola situación para que no necesite envolver algún código en un delegado al que pase Assert.DoesNotThrow. Luego, simplemente escriba la prueba sin ninguna afirmación. Una prueba que lanza una excepción inesperada fallará, por lo que hará lo que quieras y obtendrás la excepción completa.

Alrededor del 10%de mis pruebas funcionan así; sin afirmaciones en absoluto, y nombres de métodos como ThisOrThatShouldNeverThrow().

Otra opción, mientras está depurando, es ejecutar la prueba en un depurador (usando TD.NET) y en depuración | Excepciones verifique algunas casillas adicionales para que el depurador se detenga cuando se lanza la excepción.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top