【问题标题】:Clean up after exception Google c++ test framework异常后清理 Google c++ 测试框架
【发布时间】:2016-06-29 23:23:08
【问题描述】:

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

【问题讨论】:

  • 捕获异常?

标签: c++ cunit gunit


【解决方案1】:

Test Fixtures 有特殊的构造和析构方法。
它们被称为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)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-10
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    相关资源
    最近更新 更多