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

时间:2011-07-07 02:56:24

标签: c++ windows googletest

是否可以选择仅显示失败的测试?我不得不切换到使用吉他来实现这一点,但我想念命令行工具。

5 个答案:

答案 0 :(得分:7)

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

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

应该很多粘贴和播放。

答案 1 :(得分:5)

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

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

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;
};

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

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

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

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

只会打印Testfailures。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我为Google Test编写了Google Test Pretty Printer,一个测试监听器/漂亮的打印机,为Google Test程序提供更清晰,更具吸引力的控制台输出。它包含一个--failures-only选项,可以执行您想要的操作。

答案 4 :(得分:0)

如果您想要一种快速且肮脏的Python 2/3解决方案,仅用于失败的测试,而无需外部依赖项:https://gist.github.com/DTasev/a894e4727eeaa94541d90ea1a3cc71a7。它将显示失败的测试及其输出。在文件顶部的文档字符串中使用的说明

它需要void showMessage(){ showDialog( context:context, builder: (Buildcontext context){ return AlertDialog( backgroundColor: Colors.transparent, content: Container( width: MediaQuery.of(context).size.width, height: 100, alignment: AlignmentDirectional.center child: Text("TRIAL",style: TextStyle(color: Colors.white)) ) ) } ) } 的默认输出,因此,如果您进行了更改,它将无法正常工作。