首页 > 解决方案 > 与基类测试相比,如何使派生类测试在 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();
}

标签: c++googletest

解决方案


推荐阅读