c++ - 使用命令行标志删除 Google Test boiler 框架输出

标签 c++ googletest

所以我有一个 Google 测试,可以输出我需要的输出。但是,我不想包含 Google 测试输出本身来实现以下目的:

之前

Note: Google Test filter = MyTest.DISABLED_test1
...
<....OUTPUT FROM TEST....> 
...
[       OK ] MyTest.DISABLED_test1
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran.
[  PASSED  ] 1 test.

之后

...
<....OUTPUT FROM TEST....> 
...

问题:

我正在使用命令行参数来运行 DISABLED 测试,我想知道是否有一种方法可以使用命令行标志来禁用框架本身生成的测试样板输出?我想保持其他测试不变,我不能更改框架的任何配置文件。

最佳答案

您应该添加命令行参数并在main() 中自行解析它。

当参数存在时,您可以调用 gtest 来删除默认事件监听器(打印结果的那个),您将拥有静默 gtest:

if(silent_run) {
  auto& listeners = ::testing::UnitTest::GetInstance()->listeners();
  delete listeners.Release(listeners.default_result_printer());
}

注意,上面的代码应该在RUN_ALL_TESTS()之前执行。

关于c++ - 使用命令行标志删除 Google Test boiler 框架输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29497721/

相关文章:

c++ - C++ 中的错误逻辑

c++ - int8_t、int16_t、int32_t 和 int64_t 在不同的 C++ 编译器上是否具有相同的各自范围?

c++ - 将 Google C++ 测试框架与 CMake 结合使用的最简单示例

c++ - CMake 在 Ubuntu 中找不到 GoogleTest 所需的库

c++ - Google Test中的测试类的构造方法

c++ - 二维插值

c++ - 如何正确解析传入的 HTTP 请求

c++ - 需要帮助使用 C++ 类继承

c++ - 使用在 Google Test 下测试的现有 C++ 代码并添加 Qt

使用 Link inTime 替换的 C++ 单元测试