我想更改gtest打印"错误消息";当测试失败时。文档建议创建一个继承自testing::EmptyTestEventListener
的类,并实现OnTestPartResult(...)
函数。问题是:那样的话,我必须重新实现整个默认的结果打印机,因为所有其他函数(如OnTestEnd(...)
(一开始都可能是空的。我只想改变gtest打印结果的方式,但我喜欢其他一切的显示方式。如果我将新的Event Listener添加到EventListeners列表中,而不从中删除标准的,它将按预期打印两条消息(我的和标准的(。
有没有办法覆盖standard_result_printer
的单个OnTestPartResult(...)
功能?
你可以像这个草图一样做smth,而不是测试:
class MyTestListener : public testing::EmptyTestEventListener {
public:
EmptyTestEventListener() {
default_result_printer_ = UnitTest::GetInstance()->listeners()->default_result_printer();
UnitTest::GetInstance()->listeners()->Release(default_result_printer_);
UnitTest::GetInstance()->listeners()->SetDefaultResultPrinter(this);
}
~EmptyTestEventListener() {
UnitTest::GetInstance()->listeners()->Release(this);
UnitTest::GetInstance()->listeners()->SetDefaultResultPrinter(default_result_printer_);
}
void OnTestEnd(const TestInfo& test_info) override {
default_result_printer_->OnTestEnd(test_info);
}
// ...
private:
TestEventListener* default_result_printer_;
};