输出结果时如何将参数化测试合并为一个
How can I combine my parameterized tests into one when outputting results?
假设我有以下类和参数化测试:
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行输出,范围中的每个参数一个。
现在假设我想将范围从 1000 万更改为 1000 万。如果我运行它,我将获得 1000 万行输出(这太多了)。有没有办法将此参数化测试的所有输出分组为一个,并简单地报告第一个错误?
我知道我可以重写我的测试用例来循环遍历值并断言每个值,但我想知道是否有办法从 googletest 中做到这一点。此解决方案不是最佳的原因是,如果我有多个参数化测试,我将不得不为每个测试重复循环。
可以通过删除默认打印机并添加自己的打印机来更改测试输出的打印方式。阅读谷歌测试高级指南的这一部分。
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++
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 为什么在排序链表上的这种合并实现总是将两个列表都设置为 NULL,而只有一个应该设置一个列表?
- 将两个 cpp 文件合并为一个 cpp 文件
- 将所有 *.txt 文件合并到一个文本文件中,其名称由用户使用 C++ 提供
- C++ 如何将两个 makefile 对象目标规则(位于另一个文件夹中)合并到一个目标/规则中?
- 将两个列表合并为一个蛇形列表
- 使用迭代器进行合并排序中的一个缓冲区
- 如何通过通用引用或std::forward将这三个c++模板函数合并为一个
- C将链接库合并为一个库
- 是否可以将前向声明和常规声明合并到一个文件中,然后像分开一样使用它?
- 我正在编写一个拆分为 3 的合并排序,我不知道为什么它不起作用
- 两个 cin / cout 语句合并为一个
- 我想将四个字节合并为一个数字以进行串行传输
- 将两个 1D 直方图合并为一个
- 如何合并两个双重链接列表(访问下一个链接)
- 将 3 个列表合并到一个大列表中
- C++全局常量数组:是否保证合并(优化)到一个副本中
- 如何合并一个pImpl接口,同时也允许WndProc与之交互
- 合并一个类的两个数组