将模拟对象分配给受保护的成员

时间:2015-05-05 10:33:28

标签: c++ unit-testing googletest googlemock

class foo
{
    // some functions which uses class member t
    protected:   
    Test t;
};

Class Test
{
    // some functions

}

我嘲笑了类测试以及如何将模拟对象分配给类foo?因为我要去测试foo课程。

1 个答案:

答案 0 :(得分:1)

我能不能正确理解你吗?您的高效代码位于类foo中,它使用由类提供的功能。在你的情况下测试?请使用依赖注入来避免此类问题。创建一个Test从中派生的接口。例如:

// 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。