有没有办法在运行时将参数传递给谷歌测试点? 我知道我可以使用
进行静态参数const filters = selectFilters(storeState);
filter.removeValue(value);
return this.router.navigate(['some route'], {
queryParams: filters.toQueryParams()
});
但在我的用例中,我想做一些像
这样的事情TEST_P(fooTest,testPointName)
{
}
INSTANTIATE_TEST_CASE_P(InstantiationName,
FooTest,
::testing::Values("blah"));
我很感激任何指示。
答案 0 :(得分:1)
您可以使用SetUpTestCase
实现这一目标。在fixture类中,创建一个保存所需值的静态变量。然后在fixture类中实现静态函数SetUpTestCase
和TearDownTestCase
,它们将初始化并清理您的值。这是一般的想法:
class MyFixture : public ::testing::Test {
protected:
static void SetUpTestCase() {
// Code that sets up m_values for testing
}
static void TearDownTestCase() {
// Code that cleans up m_values. This function can be ommited if
// there are no specific clean up tasks necessary.
}
static MyValues m_values;
};
现在使用TEST_F
使您的测试成为灯具的一部分。现在m_values
将在灯具中的所有测试运行之前初始化一次,所有这些测试都可以访问它,并且清理将在所有测试完成后完成。
答案 1 :(得分:0)
AFAIK使用值参数化测试是不可能的,因为它们是在编译时使用宏和模板生成的。
您可以在测试中编写循环并对每个值执行测试。您可以使用custom error messages或log additional information制作特定于该值的错误消息。或者也许使用SCOPED_TRACE。