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

GoogleTest Parameterized Test - Possible To Call SetUp And TearDown Between Parameters?

本文关键字:参数 调用 之间 SetUp TearDown 测试 GoogleTest      更新时间:2023-10-16

我有一个gtest参数化类,我想在每个参数之间调用一些SetUp和TearDown。我知道谷歌测试在每个测试用例之前提供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()));

有什么想法可以让它发挥作用吗?也许是一种查看特定参数的最后一个测试用例何时运行的方法?还是我必须为每个单独的参数实例化一个测试用例?

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

  • 每个测试都应该是独立的
  • 看起来你的测试有副作用。根据我的经验,当代码增长时,它会导致很多问题

可能的解决方案:-创建单独的测试用例。它有效。违背框架几乎总是一条糟糕的路线。如果框架发生变化怎么办?你可能需要调整所有的测试。。。这在生产代码中确实是错误的。