返回指向私有成员的指针的公共方法的单元测试

时间:2013-03-09 23:12:11

标签: 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());
}

我想测试返回私有字段Pointer()地址的m_nValue方法。有人可以帮助解决这种情况的一些很好的解决方案。我可以让测试类/功能成为朋友,但我真的不喜欢它。

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

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

2 个答案:

答案 0 :(得分:3)

你不应该只测试它的可观察行为的类的内部。测试应该是

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

答案 1 :(得分:0)

我总是建议不要测试琐碎的行为。我会将此归类为微不足道的。在Java世界中,这与测试来自Clean Code建议的Martin的吸气剂类似(不完全但非常接近)。

你能做的最好的事情是测试指针不是null,并且它的解引用值是你所期望的。