Параметризованный тест GoogleTest — можно ли вызывать SetUp и TearDown между параметрами?

У меня есть параметризованный класс 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()));

Любые мысли о том, как заставить это работать? Может быть, это способ узнать, когда был запущен последний тестовый пример для определенного параметра? Или мне нужно будет создать тестовый пример для каждого отдельного параметра?


person cheddarhead52    schedule 09.04.2015    source источник
comment
Вы уверены, что ваш код не работает? Статические функции являются отдельными для каждого класса, а не для каждого шаблона класса.   -  person Kerrek SB    schedule 09.04.2015
comment
И поясняю: вы говорите о параметризованных типах тестов. .   -  person Kerrek SB    schedule 09.04.2015
comment
Да типопараметрический тест. Хорошее уточнение. Я не уверен, как работает базовый шаблон тестового класса, но я уверен, что статические SetUpTestCase и TearDownTestCase вызываются только один раз для моего полного набора тестовых случаев.   -  person cheddarhead52    schedule 10.04.2015


Ответы (1)


Я думаю, что создание такой комбинации противоречит хорошей практике, потому что:

Возможное решение: — создать отдельные тестовые наборы. Оно работает. Идти против структуры почти всегда плохой путь. А если фреймворк изменится? Возможно, вам придется выровнять все ваши тесты... что действительно неправильно в производственном коде.

person CyberGuy    schedule 09.04.2015