我有三个测试:
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
,然后运行TEST_P
,但是我需要先运行TEST_F
,然后运行{{1} },然后是最新的TEST_P
。
注意:在灯具中,我有一个静态成员,该成员在所有测试用例中都使用,但是在第一次运行TEST_F
时,我需要使该成员未初始化。
答案 0 :(得分:2)
简短的回答:您不能。而且你不应该。
答案略长:
让您的测试相互依赖(或执行顺序)是一个非常不好的主意-出于这个原因,googletest(以及适用于Visual Studio的Google测试适配器)甚至提供了选项改组您的测试用例执行顺序,因此,在每次测试运行中,您都会获得一个新的顺序,只是为了捕获否则会隐藏的错误,例如
第2个测试用例介绍了功能Foo()
,该功能应(除其他事项外)将全局标志Bar
设置为true
。
在测试结束时检查Bar
的状态,即true
,测试通过。
第5个测试用例涵盖了功能Baz()
,该功能应(除其他事项外)还将全局标志Bar
设置为true
。但是,Baz()
有一个错误,并且没有这样做。
您在测试结束时检查Bar
的状态... true
,因为状态已经在测试用例#2中设置,并且测试通过-您失败检测该错误。
请确保您的每个测试用例都可以彼此独立地运行。