Me gustaría que mi método TearDown verificara si la prueba anterior fue exitosa antes de aplicar alguna lógica. ¿Hay una forma fácil de hacer esto?NUnit - ¿Es posible verificar en TearDown si la prueba fue exitosa?
Respuesta
suena como una idea peligrosa a menos que sea una prueba de integración, con decir datos para eliminar decir. ¿Por qué no hacerlo en la prueba en sí?
Obviamente se podría establecer una bandera privada en la clase.
Esto es lo mismo Charlie Poolehas suggested si es necesario
Sólo si lo hace de forma manual. De hecho, ni siquiera sabrá qué pruebas pretenden ejecutar. En NUnit IDE uno puede habilitar algunas pruebas y desactivar algunas otras. Si desea saber si alguna prueba específica se ha quedado usted podría incluir un código como este en su clase de prueba:
enum TestStateEnum { DISABLED, FAILED, SUCCEDED };
TestStateEnum test1State = TestStateEnum.DISABLED;
[Test]
void Test1()
{
test1State = TestStateEnum.FAILED; // On the beginning of your test
...
test1State = TestStateEnum.SUCCEDED; // On the End of your Test
}
entonces usted puede comprobar la variable test1State. Si la prueba arroja una excepción, no establecerá el SUCCEDED. también se puede poner esto en un intento de captura por último bloque en sus pruebas con una lógica ligeramente diferente:
[Test]
void Test1()
{
test1State = TestStateEnum.SUCCEDED; // On the beginning of your test
try
{
... // Your Test
}
catch(Exception)
{
test1State = TestStateEnum.FAILED;
throw; // Rethrows the Exception
}
}
No es un intento de decir qué prueba se ejecutó, solo un error diferente que me gustaría arrojar para poder obtener una stacktrace más precisa –
mi humilde opinión derribar la lógica debe ser independiente de los resultados de las pruebas.
Lo ideal sería evitar el uso de la configuración y el desmontaje por completo, a al xunit.net. Vea here para más información.
Como regla, absolutamente eso es lo que debes hacer. Sin embargo, me gusta mantener mis pruebas limpias y cohesivas con un sabor BDD. A veces eso significa configurar datos y afirmaciones a través de lambdas y ejecutarlas en TearDown. El problema es si, por alguna razón, la configuración o el cuerpo de prueba fallaron, la pila de datos es confusa. –
Esto ya se ha resuelto en Ran's answer a una pregunta similar. Citando Ran:
Desde la versión 2.5.7, NUnit permite que Teardown detecte si falló la última prueba. Una nueva clase TestContext permite que las pruebas accedan a información sobre ellas mismas, incluidas las TestStauts.
Para más detalles, por favor refiérase a http://nunit.org/?p=releaseNotes&r=2.5.7
[TearDown]
public void TearDown()
{
if (TestContext.CurrentContext.Result.Status == TestStatus.Failed)
{
PerformCleanUpFromTest();
}
}
Gracias por el enlace. Tenga en cuenta que esta pregunta se publicó más de un año y medio antes de la respuesta de David. –
En Nunit 3.x es 'if (TestContext.CurrentContext.Result.Outcome == ResultState.Failure)' – Lukas
Si desea utilizar TearDown para detectar el estado de la última prueba con NUnit 3.5 que debe ser:
[TearDown]
public void TearDown()
{
if (TestContext.CurrentContext.Result.Outcome.Status.Equals(TestStatus.Failed))
{
//your code
}
}
- 1. ¿Cómo verificar si la copia de seguridad postgresql fue exitosa?
- 2. ¿Es posible parametrizar una prueba de nunit?
- 3. cómo encontrar si la llamada unregister_chrdev() fue exitosa
- 4. necesito probar si la consulta sql fue exitosa
- 5. Comprobando si la instrucción INSERT INTO fue exitosa
- 6. ¿es posible decir si DOM fue modificado, y qué parte?
- 7. ¿Cómo verifico si una inserción fue exitosa con MySQLdb en Python?
- 8. Verificar si la solicitud fue enviada por Ajax o no
- 9. ¿Es posible personalizar NUnit XML Output
- 10. Rieles: ¿es posible verificar si una cadena es binaria?
- 11. ¿Es posible verificar si una notificación es visible o cancelada?
- 12. ¿Cómo comprobar si una consulta MySQL que utiliza la API heredada fue exitosa?
- 13. Prueba si la propiedad arroja una excepción con nunit
- 14. NUnit: abortar la prueba si lleva demasiado tiempo
- 15. NUnit y TestCaseAttribute, ¿es posible la combinación cruzada de parámetros?
- 16. $ stmt-> execute(): ¿Cómo saber si la inserción db fue exitosa?
- 17. .NET NUnit prueba - Assembly.GetEntryAssembly() es nulo
- 18. especifique la prueba NUnit para ejecutar
- 19. ¿Es posible integrar NUnit en Visual Studio 2010?
- 20. ¿Es NUnit una mala elección para la prueba de selenio?
- 21. ¿Cómo verificar si un EditText fue cambiado o no?
- 22. ¿Hay alguna manera de saber si hay fallas en mi caso de prueba PHPUnit de tearDown()?
- 23. ¿Es posible verificar si los servicios de localización están activos?
- 24. ¿Cómo ignoro una prueba basada en otra prueba en NUnit?
- 25. La prueba NUnit falla debido a System.AccessViolationException
- 26. NUnit: prueba sin excepción esperada
- 27. Inserte datos en MySql DB y visualice si la inserción es exitosa o falla
- 28. ¿Se llama a tearDown si el caso de prueba arroja una excepción? (JUnit)
- 29. Prueba la lógica de Windows Forms con NUnit
- 30. ¿Es incorrecto afirmarse en el método tearDown (@After)?
Eso es molesto, lo habría hecho esperaba algún tipo de API NUnit.CurrentTestContext. Solo necesito saber si la prueba fue exitosa, ya que hay información adicional que puedo proporcionar en este dispositivo si falla que ayudaría en la depuración. –