NUnit - czyszczenie po awarii testu

Mamy kilka testów NUnit, które uzyskują dostęp do bazy danych. Gdy jeden z nich zawiedzie, może pozostawić bazę danych w niespójnym stanie - co nie stanowi problemu, ponieważ odbudowujemy bazę danych dla każdego uruchomienia testowego - ale może to spowodować, że inne testy nie powiodą się w tym samym przebiegu.

Czy można wykryć, że jeden z testów się nie powiódł i przeprowadzić jakieś czyszczenie?

Nie chcemy pisać kodu czyszczącego w każdym teście, już to robimy. Chciałbym usunąć porządek w Teardown, ale tylko jeśli test się nie powiedzie, ponieważ czyszczenie może być kosztowne.

Aktualizacja: Aby wyjaśnić - chciałbym, aby testy były proste i NIE obejmowały żadnej logiki czyszczenia lub obsługi błędów. Nie chcę też wykonywać resetowania bazy danych przy każdym uruchomieniu testowym - tylko jeśli test się nie powiedzie. Kod ten powinien być prawdopodobnie wykonany w metodzie Teardown, ale nie wiem o żadnym sposobie uzyskania informacji, jeśli test, który obecnie niszczymy, nie powiódł się lub zakończył się powodzeniem.

Aktualizacja2:

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

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

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

Szukam implementacji HasLastTestFailed ()