C++ 将gtest配置为仅在控制台中显示失败的测试

C++ 将gtest配置为仅在控制台中显示失败的测试,c++,windows,googletest,C++,Windows,Googletest,是否有只显示失败测试的选项?我不得不改用吉他来实现这一点,但我错过了命令行工具。根据文档,您可以使用测试事件更改输出。看看这里(还有一个例子):有两种方法可以实现这一点 第一个是编写自己的事件侦听器: 另一种方法是过滤googletest事件侦听器接收的输入 对于这种方法,您可以删除当前事件侦听器,并将其与您自己的侦听器交换 testing::TestEventListeners& listeners = testing::UnitTest::GetInstance()->lis

是否有只显示失败测试的选项?我不得不改用吉他来实现这一点,但我错过了命令行工具。

根据文档,您可以使用测试事件更改输出。看看这里(还有一个例子):

有两种方法可以实现这一点

第一个是编写自己的事件侦听器:

另一种方法是过滤googletest事件侦听器接收的输入

对于这种方法,您可以删除当前事件侦听器,并将其与您自己的侦听器交换

testing::TestEventListeners& listeners = testing::UnitTest::GetInstance()->listeners();
testing::TestEventListener* listener = listeners.Release(listeners.default_result_printer());
listeners.Append(new FailurePrinter(listener));
其中FailurePrinter是您自己的事件侦听器类

这个类应该是这样的

class FailurePrinter : public ::testing::TestEventListener {

public:
FailurePrinter(TestEventListener* listener) : TestEventListener() {_listener = listener;}

virtual void OnTestProgramStart(const UnitTest& unit_test);
virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration);
virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test);
virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test);
virtual void OnTestCaseStart(const TestCase& test_case);
virtual void OnTestStart(const TestInfo& test_info);
virtual void OnTestPartResult(const TestPartResult& result);
virtual void OnTestEnd(const TestInfo& test_info);
virtual void OnTestCaseEnd(const TestCase& test_case);
virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test);
virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test);
virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration);
virtual void OnTestProgramEnd(const UnitTest& unit_test);

protected:
testing::TestEventListener* _listener;
};
现在您必须实现所有的方法

如果您喜欢谷歌事件监听器打印内容的方式,只需将调用委托给_监听器即可

或者您可以修改结果。 例如:

void FailurePrinter::OnTestPartResult(const TestPartResult& test_part_result)
{
  if (test_part_result.failed())
  {
      _listener->OnTestPartResult(test_part_result);
      printf("\n");
  }
}

只打印Testfailures。

我遇到了同样的问题——我相信很多其他人都遇到过。所以我创造了这个:


应该是相当多的粘贴和播放。

我写了一个测试侦听器/谷歌测试的漂亮打印机,为谷歌测试程序提供更干净、更吸引人的控制台输出。它包括一个
--failures only
选项,该选项应该满足您的需要。

如果您想要一个只针对失败测试的快速且肮脏的Python 2/3解决方案,并且没有外部依赖项,则:。它将显示失败的测试及其输出。在文件顶部的docstring中使用的指令

它需要
gtest
的默认输出,因此如果您更改了,它将无法工作