使用gcc编译的CppUnit测试产生堆栈跟踪

时间:2016-02-11 14:34:02

标签: c++ unit-testing debugging gcc cppunit

我有很多C ++测试用例都是使用CppUnit单元测试框架实现的。

在我们的项目中,我们在各种测试类和各种帮助类中都有大量的语句 - 在整个测试代码中很短 - 所有内部深处都依赖于各种 CPPUNIT_ASSERT _ **** 宏以确保结果符合预期。

在测试框架中使用的典型帮助函数可能如下所示:

void checkMatricesEqual(const Matrix& ref,const Matrix& val) {
    CPPUNIT_ASSERT_EQUAL(ref.w,val.w);
    CPPUNIT_ASSERT_EQUAL(ref.h,val.h);
    ...
    ...
}

现在,如果一个断言失败,CppUnit会打印出测试函数的名称,以及file.cpp:行,如果它指向一个像上面那样的通用测试助手函数,那么它就没有用。在一个大的测试框架中,错误的位置很难跟踪。

相反,我真的很想看到堆栈跟踪作为输出。 我知道使用内部gcc库和-g从一些代码块打印堆栈跟踪是可能的How to generate a stacktrace when my gcc C++ app crashes

我不知道:如何将其与CppUnit集成? 创建补丁并覆盖原始CppUnit功能? 也许以某种方式挂钩了消息的生成?

如果有人提示如何完成这样的事情,我真的很感激。

0 个答案:

没有答案