c++ - 减少 gtest 的输出,使其看起来类似于 cxxtest 的输出

标签 c++ googletest

我有一组使用 gtest 作为框架的单元测试。

构建并执行,输出如下所示:

gtest output

我希望输出类似于使用 cxxunit 时的输出(. 测试通过时,失败时详细错误)。如果可能的话,用颜色。

如何做到这一点?


如果我不清楚,我正在寻找代码以及如何执行此操作的确切方法。


输出应该是这样的:

Executing dummy_tests .....
../code/app/unit_tests/unittest_dummy.cpp:25: Failure
Value of: 2
Expected: 1
..
FAILED

我正在尝试使用 this example并创建自定义监听器。但是该示例没有彩色输出,并且在输出中打印了很多消息。

至于彩色输出,开发者实现了ColoredPrintf()函数。

至于我面临的特殊问题是缺少文档:

  • 如何在程序启动时获取有关整个测试套件的信息? (我猜在 OnTestProgramStart() 方法中)
  • 如何获取有关测试是否失败的信息? (OnTestProgramEnd()?还是其他方法?)

最佳答案

您提到的文档页面有一个指向 sample code 的链接这回答了你的问题。您可以通过以下方式在 OnTestProgramStart() 或更高版本中枚举测试用例和其中的测试:

UnitTest& unit_test = *UnitTest::GetInstance();
for (int i = 0; i < unit_test.total_test_case_count(); ++i) {
  const TestCase& test_case = *unit_test.GetTestCase(i);
  for (int j = 0; j < test_case.total_test_count(); ++j) {
    const TestInfo& test_info = *test_case.GetTestInfo(j);
    fprintf(stdout, "%s.%s\n", test_case.name().c_str(),
            test_info.name().c_str());
  }
}

确实可以在OnTestProgramEnd()中收集有关测试状态的信息:

virtual void OnTestProgramEnd(const UnitTest& unit_test) {
  fprintf(stdout, "TEST %s\n", unit_test.Passed() ? "PASSED" : "FAILED");
  fflush(stdout);
}

ColoredPrintf() 在外部不可用;您可以将其代码复制到您的项目中。

关于c++ - 减少 gtest 的输出,使其看起来类似于 cxxtest 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21553669/

相关文章:

c++ - 在 C++ 类中使用 <random>

c++ - 如何在 C++ 中使用字符串文字初始化动态字符数组?

c++ - 访问派生类对象列表的元素抛出 "read access violation"异常,而列表是由函数填充的

c++ - 在 gtest 中运行线程

c++ - 使用 void 函数检查 gtest 中的错误

c++ - 编写可以访问私有(private)/ protected 状态的单元测试

c++ - GoogleTest:如何设置断点?

c++ - ';' 标记之前的预期主表达式

c++ - 使用 getline 读取换行符或文本

c++ - 不可实例化的谷歌测试夹具父类(super class)