Я использую Boost Test для юнит-тестов. У меня обычно есть структура прибора:
class ClassBeingTested
{
protected:
int _x; // Want to access this directly in my unit tests
};
struct TestFixture : public ClassBeingTested
{
// I can access ClassBeingTested::_x here but it means i have to add getters for each test to call
ClassBeingTested _bla;
};
Однако, даже если мой прибор наследует от ClassBeingTested
или использует отношения друзей, я не могу получить доступ к закрытым / защищенным методам / состоянию из каждого отдельного теста:
BOOST_FIXTURE_TEST_CASE(test1, TestFixture)
{
_bla.doSomething();
BOOST_REQUIRE_EQUAL(_bla.x, 10); // Compiler error. I cannot access ClassBeingTested::_x here
}
только прибор, что означает, что я должен добавить новый геттер (или тест) для каждого доступа, который я sh должен сделать.
Есть ли способ добиться этого? Я должен добавить методы getli c publi к ClassBeingTested
, которые используются только тестами, что не идеально.
(Пожалуйста, не отвечайте на вопросы "test using интерфейс publi c", это не всегда возможно).