是否可以仅显示失败的测试?我不得不切换到使用Guitar来实现这一点,但是我错过了命令行工具。
有两种方法可以实现。
第一个是编写自己的事件侦听器:
另一种方法是过滤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");
}
}
将仅打印测试失败。
我写了Google Test Pretty Printer,这是Google Test的测试监听器/漂亮打印机,旨在为Google Test程序提供更简洁,更吸引人的控制台输出。它包含一个--failures-only
选项,该选项应该可以执行您想要的操作。
根据文档,您可以使用测试事件来更改输出。看这里(也有一个例子):https://github.com/google/googletest/blob/master/googletest/docs/advanced.md#extending-googletest-by-handling-test-events
如果只想为失败的测试提供快速而肮脏的Python 2/3解决方案,并且没有外部依赖项,请输入https://gist.github.com/DTasev/a894e4727eeaa94541d90ea1a3cc71a7。它将显示失败的测试及其输出。在文件顶部的文档字符串中使用的说明
它需要gtest
的默认输出,因此,如果您进行了更改,它将无法使用。