单元测试-如何用私有构造函数C++测试私有成员



我下面有一些代码:

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的值。如何测试此代码?

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

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

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

friend int main();

然后在主函数中,取消对以下行的注释:

t=new base;

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

最新更新