GoogleTest参数化测试 - 可以调用参数之间的SetUp和TearDown吗?

时间:2015-04-09 20:06:47

标签: c++ unit-testing googletest parameterized-unit-test

我有一个gtest参数化类,我想在每个参数之间调用一些SetUp和TearDown。我知道googletest在每个测试用例之前提供SetUp,在所有测试用例之前提供SetUpTestCase。

我有这样的事情:

class MyParameterizedTest: public TestWithParam<MyParams>
{
public:
   MyParameterizedTest() {}

   void SetUp()
   {
      //called before every test case
   }

   void TearDown()
   {
      //called after every test case
   }

   static void SetUpTestCase()
   {
      //called at the begining of framework and before all test cases
   }

   static void TearDownTestCase()
   {
      //called at the end of the framework and after all test cases
   }

   //Wishing for something like:
   // void SetUpParameter()
   {
      //called before start of parameter
   }
};

INSTANTIATE_TEST_CASE_P(RegistrationTest, InterfaceTest, ValuesIn(AllTheValues::GetAllMyParams()));

任何关于某种方式的想法都可以使这项工作成功也许是一种方法来查看何时为特定参数运行最后一个测试用例?或者我是否必须为每个参数实例化一个测试用例?

1 个答案:

答案 0 :(得分:0)

我认为创建这样的组合是违反良好做法的,因为:

可能的解决方案: - 创建分离的测试用例。有用。反对框架几乎总是一条糟糕的路线。如果框架发生变化怎么办?您可能必须对齐所有测试...这在生产代码中确实是错误的。