Тест Google: Параметризованные тесты, которые используют существующий тестовый класс приспособления?

У меня есть тестовый класс приспособления, который в настоящее время используется многими тестами.

#include <gtest/gtest.h>
class MyFixtureTest : public ::testing::Test {
  void SetUp() { ... }
};

Я хотел бы создать параметризованный тест, который также использует весь, что MyFixtureTest должен предложить, не будучи должен изменить все мои существующие тесты.

Как я делаю это?

Я нашел подобные обсуждения сети, но не полностью понял их ответы.

20
задан des4maisons 30 June 2010 в 18:52
поделиться

2 ответа

Проблема в том, что для регулярные тесты, ваше приспособление должно быть получено из testing :: Test, а для параметризованных тестов оно должно быть получено из testing :: TestWithParam <>.

Чтобы приспособиться к этому, вам нужно будет изменить свой класс фикстуры, чтобы он работал с вашим типом параметра

template <class T> class MyFixtureBase : public T {
  void SetUp() { ... };
  // Put the rest of your original MyFixtureTest here.
};

// This will work with your non-parameterized tests.
class MyFixtureTest : public MyFixtureBase<testing::Test> {};

// This will be the fixture for all your parameterized tests.
// Just substitute the actual type of your parameters for MyParameterType.
class MyParamFixtureTest : public MyFixtureBase<
    testing::TestWithParam<MyParameterType> > {};

Таким образом вы можете сохранить все ваши существующие тесты нетронутыми при создании параметризованных тестов с использованием

TEST_P(MyParamFixtureTest, MyTestName) { ... }
22
ответ дан 29 November 2019 в 22:52
поделиться

Если вы создадите новый прибор, производный от этого общего, и затем создадите свои параметризованные тесты в этом производном классе - поможет ли это вам и решит вашу проблему?

Из Google Test вики-страница : «В Google Test вы разделяете инструментальное средство между тестовыми примерами, помещая общую логику в базовое тестовое устройство, а затем извлекая из этой базы отдельный инструмент для каждого тестового примера, который хочет использовать эту общую логику».

0
ответ дан 29 November 2019 в 22:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: