我有这样的代码:
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/