我正在使用谷歌单元测试框架(灯具)进行C ++单元测试,测试后的清理对我来说非常重要。但是在异常的情况下,可执行文件崩溃并且清理从未发生过。有没有办法强制清理,即使是例外情况?
答案 0 :(得分:0)
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)例)。
除此之外,你总是可以捕获异常,并在catch上处理清理。