gpt4 book ai didi

c++ - googletest - 如何在输出结果时将我的参数化测试合并为一个?

转载 作者:太空狗 更新时间:2023-10-29 21:35:36 25 4
gpt4 key购买 nike

假设我有以下类和参数化测试:

class SimpleTest : public ::testing::Test, public ::testing::WithParamInterface<int> {};

INSTANTIATE_TEST_CASE_P(SimpleTests, SimpleTest, ::testing::Range(1, 10));

TEST_P(SimpleTest, TestGreaterThanZero) {
int i = GetParam();
ASSERT_GT(i, 0);
}

当我运行 googletest 时,我得到 10 行输出,每一行对应范围内的每个参数。

现在假设我想将范围从 10 更改为 1000 万。如果我运行它,我将得到 1000 万行输出(这太多了)。有没有一种方法可以将此参数化测试的所有输出组合成一个,并仅报告第一个错误?

我知道我可以重写我的测试用例以循环遍历值并对每个值进行断言,但我想知道是否有一种方法可以从 googletest 执行此操作。这个解决方案不是最优的原因是,如果我有多个参数化测试,我将不得不为每个测试重复循环。

最佳答案

您可以通过删除默认打印机并添加您自己的打印机来更改测试输出的打印方式。阅读此 part google-test 高级指南。

int main(int argc, char** argv) {
::testing::InitGoogleTest(&argc, argv);
// Gets hold of the event listener list.
::testing::TestEventListeners& listeners =
::testing::UnitTest::GetInstance()->listeners();
// delete default printer
delete listeners.Release(listeners.default_result_printer());
// add your own
listeners.Append(new MinimalistPrinter);
return RUN_ALL_TESTS(); return RUN_ALL_TESTS();
}

如何定义这样的 MinimalistPrinter?它是通过继承 ::testing::EmptyTestEventListener 来完成的。只需覆盖 OnTestPartResult 以收集失败信息,并覆盖 OnTestEnd 以打印单行摘要。


或者您可以尝试使用 --gtest_break_on_failure 选项。

关于c++ - googletest - 如何在输出结果时将我的参数化测试合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41941154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com