14

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

4

6 回答 6

9

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

https://gist.github.com/elliotchance/8215283

应该是几乎粘贴和播放。

于 2014-01-02T05:05:21.890 回答
8

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

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

https://github.com/google/googletest/blob/master/googletest/docs/advanced.md#defining-event-listeners

另一种方法是过滤 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;
};

现在你必须实现所有的方法。

如果您喜欢 google 事件监听器打印某些内容的方式,只需将调用委托给 _listener。

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

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

只会打印测试失败。

于 2012-03-26T12:34:01.777 回答
1

我编写了Google Test Pretty Printer,一个用于 Google Test 的测试监听器/漂亮打印机,为 Google Test 程序提供更干净、更有吸引力的控制台输出。它包括一个--failures-only应该做你想做的事情的选项。

于 2017-03-08T03:26:32.257 回答
0

现在有一个内置的解决方案:

your_test_binary --gtest_brief=1

另请参阅文档。还有 GTEST_BRIEF 环境变量来配置它。

于 2021-11-26T10:27:12.440 回答
0

如果您想要一个快速而肮脏的 Python 2/3 解决方案,仅用于失败的测试,没有外部依赖:https ://gist.github.com/DTasev/a894e4727eeaa94541d90ea1a3cc71a7 。它将显示失败的测试+它的输出。在文件顶部的 docstring 中使用的说明

它需要gtest' 的默认输出,所以如果你改变了它就不会工作。

于 2019-10-08T09:09:01.477 回答
-1

根据文档,您可以使用测试事件更改输出。看这里(还有一个例子):https ://github.com/google/googletest/blob/master/googletest/docs/advanced.md#extending-googletest-by-handling-test-events

于 2012-03-15T13:07:15.867 回答