Я правильно понял вас? Ваш продуктивный код находится в классе foo, и он использует функциональные возможности, предоставляемые классом. В вашем случае тест? Пожалуйста, используйте инъекции зависимостей, чтобы избежать таких проблем. Создайте интерфейс, из которого вытекает Тест. Например:
// Productive Code
class TestInterface {
virtual void TestMethod() = 0;
};
class ProductiveTest : public TestInterface {
...
}
class foo
{
public:
foo(TestInterface const& t) : t_(t) {}
// some functions which uses class member t
protected:
TestInterface& t_;
};
// Test Code
class Test : public TestInterface {
MOCK_METHOD0(TestMethod, void());
}
Таким образом, вы можете протестировать foo также в изоляции.
Как защищенный член 'Test t' присваивается в реальном коде? –