c++ - 与基类测试相比,如何使派生类测试在 INSTANTIATE_TEST_CASE_P 中使用 ::testing::Combine 的更多值参数?
问题描述
/*
如何使派生类测试使用更多的值参数 with::testing:: 与基类测试相比,在 INSTANTIATE_TEST_CASE_P 中组合而不对基类测试代码进行任何更改?
*/ //--------------------------------------------- -------------------------------------------------- ---------
#include "gtest/gtest.h"
namespace my {
namespace project {
namespace {
class FooTest : public ::testing::TestWithParam<std::tuple<int,int>> {
public:
int change_number(int a){
return (a*4)+1;
}
};
TEST_P(FooTest, is_sum_even) {
int num1 = std::get<0>(GetParam());
int num2 = std::get<1>(GetParam());
int ans = num1+num2;
printf("%d",ans);
EXPECT_EQ(true,change_number(ans)%2);
}
INSTANTIATE_TEST_SUITE_P(
full,
FooTest,
::testing::Combine(
::testing::Values(
1, 711, 1980, 2013
),
::testing::Values(1,2,3,4)
) );
class FooTestDerived : public FooTest , public ::testing::TestWithParam<std::tuple<int,int,int,int>> {
//class FooTestDerived :public FooTest {
public:
*//want to use this data type std::tuple<int,int,int,int>*
FooTestDerived(){
}
};
TEST_P(FooTestDerived, issumeven) {
printf("Hellow::Derived Class");
int num1 = std::get<0>( GetParam());
int num2 = std::get<1>(GetParam());
int num3 = std::get<2>( GetParam());
int num4 = std::get<3>( GetParam());
ASSERT_EQ(true,change_number(num1+num2+num3+num4)%2);
}
//Need to enable this
INSTANTIATE_TEST_SUITE_P(
full,
FooTestDerived,::testing::Combine(::testing::Values(1,2,4),::testing::Values(0,2,6),::testing::Values(1),::testing::Values(3))
);
} // namespace
} // namespace project
} // namespace my
/* To run all the tests*/
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
解决方案
推荐阅读
- python - 如何修复“浮动对象不可调用”错误?
- javascript - 用 div 初始化 listjs 的最佳方法是什么
- javascript - 如何使用连字符验证 13 位电话号码?
- android - flexbox 在 iOS/android 上的行为不同
- angular - Angular 指令 - 访问子级
- java - 遗传算法 - N 皇后问题 - 对角线冲突
- go - golang实现全文搜索的高效方法
- linux-kernel - 从 /dev/kmem 读取 init_stack task_struct
- ocaml - 为什么这个 ocaml 片段会导致堆栈溢出?
- python - DQN 算法在 CartPole-v0 上不收敛