c++ - 在 C++ 中,如何对 protected 方法进行 单元测试 处理?

  显示原文与译文双语对照的内容
97 5

如何在 C++ 中 单元测试的protected 方法?

如果不是在测试类中创建测试类,那么在测试类中创建一个公开的类,但这两种方法都不适用于我的测试类中。

我正在使用NUnit测试非托管 C++ 类。

时间:原作者:0个回答

74 2

假设你指的是公共可以访问类的protected 方法:

在测试代码中,定义测试( 直接或者从它的派生类之一)的类的派生类。为 protected 成员添加访问器,或者在派生类中执行测试。"protected"访问控制在 C++ 中并不十分可怕:它不需要从基类到"裂缝"的任何操作。因此最好不要在基类中引入任何"测试代码",甚至不包括友元声明:

//in realclass.h
class RealClass {
 protected:
 int foo(int a) { return a+1; }
};
//in test code
#include"realclass.h"
class Test : public RealClass {
 public:
 int wrapfoo(int a) { return foo(a); }
 void testfoo(int input, int expected) {
 assert(foo(input) == expected);
 }
};
Test blah;
assert(blah.wrapfoo(1) == 2);
blah.testfoo(E_TO_THE_I_PI, 0);
原作者:
...