Модульный тест с доступом к частным переменным

У меня есть модульный тестовый класс Tester ; Я хочу, чтобы он имел доступ к закрытым полям класса Working .

class Working {
    // ...
    private:
    int m_variable;
};

class Tester {
    void testVariable() {
        Working w;
        test( w.m_variable );
    }
}

У меня есть следующие варианты:

  • сделать m_variable общедоступным - уродливым
  • сделать метод test_getVariable () - чрезмерно сложным
  • добавить тестировщик классов друзей на «Работает» - тогда рабочий «знает» о тестере явно, что нехорошо

Мой идеальный вариант -

class Working {
    // ...
    private:
    int m_variable;

    friend class TestBase;
};

class TestBase {};

class Tester : public TestBase {
    void testVariable() {
        Working w;
        test( w.m_variable );
    }
}

, где рабочий знает о TestBase, но не о каждом тесте ... но он не работает.Видно дружба не работает с наследством.

Какое решение здесь было бы наиболее элегантным?

8
задан Jakub M. 23 December 2011 в 17:03
поделиться