NUnit - limpieza después de la falla de la prueba

Tenemos algunas pruebas NUnit que acceden a la base de datos. Cuando uno de ellos falla, puede dejar la base de datos en un estado inconsistente, lo cual no es un problema, ya que reconstruimos la base de datos para cada ejecución de prueba, pero puede hacer que otras pruebas fallen en la misma ejecución.

¿Es posible detectar que una de las pruebas falló y realizar algún tipo de limpieza?

No queremos escribir código de limpieza en cada prueba, ya lo hacemos ahora. Me gustaría realizar una limpieza en Teardown pero solo si la prueba falló, ya que la limpieza podría ser costosa.

Actualizar: Para aclarar: me gustaría que las pruebas sean sencillas y NO incluyan ninguna lógica de limpieza o manejo de errores. Tampoco quiero realizar un restablecimiento de la base de datos en cada ejecución de prueba, solo si la prueba falla. Y este código probablemente debería ejecutarse con el método Teardown, pero no conozco ninguna forma de obtener información si la prueba que actualmente estamos eliminando ha fallado o fue exitosa.

Actualización2:

        [Test]
        public void MyFailTest()
        {
            throw new InvalidOperationException();
        }

        [Test]
        public void MySuccessTest()
        {
            Assert.That(true, Is.True);
        }

        [TearDown]
        public void CleanUpOnError()
        {
            if (HasLastTestFailed()) CleanUpDatabase();
        }

Estoy buscando la implementación de HasLastTestFailed ()

Respuestas a la pregunta(11)

Su respuesta a la pregunta