我有这样的代码:
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 ++代码
答案 0 :(得分:3)
你不应该只测试它的可观察行为的类的内部。测试应该是
Asser::AreEqual( *obj.Pointer(), 3 );
答案 1 :(得分:0)
我总是建议不要测试琐碎的行为。我会将此归类为微不足道的。在Java世界中,这与测试来自Clean Code建议的Martin的吸气剂类似(不完全但非常接近)。
你能做的最好的事情是测试指针不是null,并且它的解引用值是你所期望的。