如何使用私有构造函数C ++测试私有成员

时间:2013-02-20 10:38:09

标签: c++ unit-testing googletest

我有以下代码:

class base{
private:
    base();
    int x;
public:
    friend class child;
};
class child{
public:
    void display(base* b)
    {
        b->x = 1;
    }

};
int main()
{
    base* t;
    //t = new base;
    child c;
    c.display(t);
}

我无法分配对象t。我想测试x的值。 我该如何测试这段代码?

2 个答案:

答案 0 :(得分:4)

您通常只测试班级的公共API 因此,如果您需要测试x的值,那么该值很可能也与其他类相关。您声明child为访问x的朋友的事实支持这一事实。

结论:
x公开或(更好)提供getter和可能的setter方法。

答案 1 :(得分:1)

将此代码添加到公共部分的基类中:

friend int main();

然后在main函数中,取消注释以下行:

t=new base;

但是我建议你将基类的构造函数设为public而不是private。另外,我真的很好奇为什么你把基类的构造函数设为私有。