gtest:在 2 TEST_Fs内运行TEST_P
gtest: run TEST_P inside 2 TEST_Fs
我有三个测试:
TEST_F(lexer, no_data)
{
// some initial test
}
INSTANTIATE_TEST_CASE_P(parser, lexer, ::testing::Values(/*some list of values*/));
TEST_P(lexer, with_data)
{
// fixture's static member initialization.
// tests for each input value
}
TEST_F(lexer, no_more_data)
{
// final test
}
问题是当我运行测试时,它在开始时运行TEST_F
s,然后运行TEST_P
,但我需要先运行TEST_F
,然后为每个输入运行TEST_P
s,最后运行最新的TEST_F
。 注意:在夹具中,我有一个静态成员,它用于所有测试用例,但是我需要在运行第一个TEST_F
时取消初始化该成员。
简短的回答:你不能。你不应该。
稍长的答案:
让你的测试相互依赖(或它们的执行顺序(是一个非常糟糕的主意- 正是出于这个原因,googletest(以及Visual Studio的谷歌测试适配器(甚至提供了打乱测试用例执行顺序的选项,所以在每次测试运行中你都会得到一个新的顺序,只是为了捕获否则会隐藏的错误, 例如
测试用例 #2 涵盖了函数Foo()
,该函数应(除其他外(将全局标志Bar
设置为true
。
在测试结束时检查Bar
状态,即true
测试通过。
测试用例 #5 涵盖了函数Baz()
,该函数还应(除其他外(将全局标志Bar
设置为true
。但是,Baz()
有一个错误,并且不这样做。 您在测试结束时检查Bar
状态...这很true
,因为它已经在测试用例 #2 中设置,并且测试通过 - 您未能检测到错误。
确保每个测试用例可以彼此独立运行。
相关文章:
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 代码在main()中运行,但在函数中出现错误
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 如何在运行中期切换GTK CSS style_context
- 如何在MS Visual Studio 2019中运行QT UI
- 如何通过cpp程序运行shell脚本
- IPC使用多个管道和分支进程来运行Python程序
- 删除指向指针的指针是运行时错误吗
- 如何用参数值调用函数(仅在运行时已知)
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- c++中的指针和运行时错误
- 在C应用程序中运行C++(带有STL)函数
- Google Test with CLion 未运行测试
- 使用 make test 运行程序并直接调用它时出现奇怪的行为 ./prog
- 如何通过命令行运行Google Test