The*_*red 2 c++ protected googletest
我有这个类 testC 用于谷歌测试
class testC : public A { };
Run Code Online (Sandbox Code Playgroud)
然后是同一文件中的一堆测试。
TEST(test_case_name, test_name) {
... test body ...
}
Run Code Online (Sandbox Code Playgroud)
A的结构是这样的
class A{
protected:
B b;
public:
//constructors
//destructor
//member functions
Run Code Online (Sandbox Code Playgroud)
问:如何通过访问b所有功能?TEST(){}testC
我尝试做一个吸气剂testC
public:
testC getTest(){
testC test;
return test;
}
Run Code Online (Sandbox Code Playgroud)
我也尝试返回参考,但没有运气......
尝试 googletest 提供的 FRIEND_TEST 宏。请查看私人班级成员下的高级指南。
您必须将测试声明为被测代码的友元。如果我没记错的话,您必须声明所有想要访问受保护成员的测试的友谊。
class MySystemUnderTest
{
#ifdef _MY_UNIT_TEST
FRIEND_TEST(MySystemUnderTest_test, functionA_prereq_expected);
FRIEND_TEST(MySystemUnderTest_test, functionB_prereq_expected);
#endif
...
};
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,我使用预处理器符号 _MY_UNIT_TEST 从生产代码中删除声明。方法functionA_prereq_expected和functionB_prereq_expected将在测试装置MySystemUnderTest_test中定义。
您必须在被测试的代码中添加FRIEND_TEST声明。如果您想针对受保护/私有成员进行测试,这就是您必须付出的代价。
| 归档时间: |
|
| 查看次数: |
3325 次 |
| 最近记录: |