我有一个单元测试类Tester
;我希望它能够访问Working
类的私有字段。
class Working {
// ...
private:
int m_variable;
};
class Tester {
void testVariable() {
Working w;
test( w.m_variable );
}
}
我有以下几个选项:
- 将m_variable设为
public
- 这样做不好看 - 编写
test_getVariable()
方法 - 这样会过于复杂 - 在Working类中加入
friend class Tester
- 这样Working就会显式地知道Tester,这并不是一个好的选择
我理想的方案是
class Working {
// ...
private:
int m_variable;
friend class TestBase;
};
class TestBase {};
class Tester : public TestBase {
void testVariable() {
Working w;
test( w.m_variable );
}
}
Working知道TestBase,但不知道每个测试用例...但这种方法行不通。显然,友谊不能和继承一起使用。
在这里最优雅的解决方案是什么?