kir*_*off 4 c++ testing loops fixtures googletest
我想在 googleTest 中循环测试用例。我在这里所说的测试用例是这样的:
TEST_F(AppsTests, test_wkf1)
{
//...
}
Run Code Online (Sandbox Code Playgroud)
如果我在里面循环TEST_F,它就会崩溃。所以我会循环测试用例,如
foreach(QString s, list)
{
TEST_F(AppsName, test_i)
{
//...
}
}
Run Code Online (Sandbox Code Playgroud)
我想到了这个解决方法:我在循环的每个循环中执行 aSetUp()和 a TearDown()。但这样做的,我要开始的测试用例TearDown(),并结束它setUp()。这不好。
有没有另一种方法,例如在夹具上方定义一个环境?
小智 5
您可以使用值参数化测试。基本上,您会执行以下操作:
class AppsTests : public ::testing::TestWithParam<QString>
{
// ...
};
TEST_P(AppsTests, TestA) { /* ... */ }
TEST_P(AppsTests, TestB) { /* ... */ }
INSTANTIATE_TEST_CASE_P(MyTests, AppsTests, ::testing::ValuesIn(list));
Run Code Online (Sandbox Code Playgroud)
在此之后,您将为 中包含的每个值生成一个测试list。