Повысьте модульное тестовое устройство, наследующее тестовый класс, чтобы иметь доступ к защищенным методам? - PullRequest
0 голосов
/ 10 января 2019

Ранее я работал с Google Test / GTest, который, я уверен, позволил вашему классу текстовых фиксаций наследовать класс, который вы тестировали, чтобы он мог иметь доступ к защищенным методам тестируемого класса (без необходимости их использования). как общедоступный).

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

Есть ли у классов тестовых приборов доступ к защищенным методам классов, тестируемых в Boost Test? Если нет, каков наилучший способ предоставления закрытых / защищенных методов для модульного тестирования?

1 Ответ

0 голосов
/ 09 мая 2019

Тестовая функция из BOOST_FIXTURE_TEST_CASE является частью структуры, которая наследуется от прибора. Это общедоступные и защищенные члены могут рассматриваться как локальные переменные. Добавьте приспособление, которое унаследовано от класса, который вы хотите протестировать, и вы отправитесь в гонки:

class TestClass {
public:
    TestClass() {}
protected:
    bool Foo() { return true; }
};

class MyFixture : public TestClass {
public:
    MyFixture() { bar = 1; }
protected:
    int bar;
};

BOOST_FIXTURE_TEST_CASE(MyTest, MyFixture) {
    BOOST_TEST(bar == 1);
    BOOST_TEST(Foo());
}
...