c++ - 返回指向私有(private)成员的指针的公共(public)方法的单元测试

标签 c++ unit-testing

我有这样的代码:

class Foo
{
private :

    int m_nValue;

public :

    explicit Foo(const int nValue) : 
        m_nValue(nValue)
    {
    }

    const int* Pointer() const
    {
        return &m_nValue;
    }
};

void Test()
{
    Foo obj(3);

    // I want to do something like this.
    //Assert::AreEqual(&obj.m_nValue, obj.Pointer());
}

我想测试返回私有(private)字段m_nValue 地址的Pointer() 方法。有人可以为这种情况提供一些不错的解决方案吗?我可以让测试类/函数成为 friend ,但我真的不喜欢它。

也许这不是应该测试的方法。但据我所知,所有公共(public)方法都应该进行测试。

对于 MSVS 2012 中的 C++ 代码,测试是用 C++ 编写的

最佳答案

您不应该只测试类的内部结构,只测试其可观察到的行为。测试应该是

Asser::AreEqual( *obj.Pointer(), 3 ); 

关于c++ - 返回指向私有(private)成员的指针的公共(public)方法的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15317006/

相关文章:

c++ - 如何在 C 代码中模拟 C++ namespace 功能?

python - 为什么 unittest 找不到我的 tests.py?

java - 使用 Mockito 模拟接口(interface)时出现异常

java - 如何在 Junit 中模拟属性文件

javascript - 在函数中添加两个参数到 "then"Protractor

c# - 如何对电子邮件发送进行单元测试?

c++ - 以人类可读的形式在 QSettings 中保存自定义 QMap 模板实例化

c++ - 使用 cmake 和 msvc 2010 构建 gdcm 2.4.1 无法获取所有 dll

c++ - 'this' 指针可以与对象的指针不同吗?

c++ - 什么会导致隐式/默认复制构造函数在 POD 结构上失败?