【发布时间】:2016-08-19 19:21:30
【问题描述】:
我正在为我的班级编写单元测试,并且想练习私有方法。我正在做这样的事情:
class MyClass {
Myclass() {}
~MyClass() {}
#ifdef TESTING
public:
#else
private:
#endif
void MyMethod1();
void MyMethod2();
};
如果定义了TESTING,我会更改类签名以公开所有内容。在我的测试代码中,我只是做这样的事情:
#define TESTING
#include "MyClass.h"
void MyTestMethod()
{
MyClass mc;
mc.MyMethod1(); // Now I can access MyMethod1
}
所以它只在我的测试文件中公开,而不是在其他任何地方。我的测试可执行文件看到一个标题,该标题描述了一个完全公开的类。该类的代码实际上是在其他地方构建的(未定义TESTING),因此当测试项目链接到库时,范围会有所不同。
这有可能破坏任何东西吗?我担心如果标头与目标文件中实际生成的不同,这可能会改变 vtables 的位置或编译器和链接器的期望。
【问题讨论】:
标签: c++ unit-testing