C++ 对私有成员的单元测试
本文记录了如果用 gtest 对 C++ 进行单元测试
Why
既然是类私有成员当然是不希望外部可以访问的,会提示私有成员无法访问。
How
C++ 如果想在外部访问类的私有成员,可以将外部函数定义成友元;
gtest 正是使用此方法,将对应的测试函数定义成类的友元。
付出的代价是对原代码的侵入。
我们用一个例子来描述:
原始类:
1 | class Example |
测试 Example 私有成员:
- 需要在代码文件中增加 gtest 头文件
1 | #include "gtest/gtest_prod.h" |
- Example类增加gtest提供的宏FRIEND_TEST
1 | FRIEND_TEST(ExmapleTest, testSetNum); |
表示把TEST(ExampleTest, testSetNum) 设置为友元
此时的类文件:
1 | #include "gtest/gtest_prod.h" |
- 测试代码
1 | TEST(ExampleTest, testNumber){ |
注: 有 namespace 时需要保持与被测试类一致