0

我正在使用 google 单元测试框架(fixtures)使用 C++ 单元测试,测试后清理对我来说非常重要。但是如果发生异常,可执行文件会崩溃并且清理永远不会发生。即使出现异常,有没有办法强制清理?

4

1 回答 1

0

测试夹具具有特殊的构造和破坏方法。
它们被称为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;
     }
};

建议使用smart pointers并遵循RAII实践,但我意识到这并不总是可能的,具体取决于您正在测试的内容(例如传统 C API)。

除此之外,您始终可以捕获异常,并在捕获时处理清理。

于 2016-06-29T23:30:11.327 回答