Я использую модульные тесты C ++ с использованием фреймворка модульных тестов Google (приспособления), очистка после тестов очень важна для меня. Но в случае исключения исполняемый файл вылетает и очистка никогда не происходит. Есть ли способ принудительной очистки даже в случае исключений?
Испытательные приспособления есть специальные методы для строительства и разрушения.
Они называются SetUp()
а также TearDown()
,
Поместите соответствующий код очистки внутри вашего TearDown()
метод.
class FooTest : public ::testing::Test
{
TestObject *object;
virtual void SetUp()
{
TestObject = new TestObject();
}
virtual void TearDown()
{
//clean up occurs when test completes or an exception is thrown
delete object;
}
};
Рекомендуется использовать умные указатели, и следовать RAII практики, но я понимаю, что это не всегда возможно в зависимости от того, что вы тестируете (например, устаревшие API C).
Кроме того, вы всегда можете просто перехватить исключение и выполнить очистку при вылове.
Других решений пока нет …