我正在 QT 中为我的项目实现一个测试类。我已经为所有公共(public)函数添加了测试,但是我想在测试中包含一些私有(private)函数。
显然这行不通,因为它们是私有(private)成员函数,但我想知道这是否能够在我想从测试用例访问它们的基础上被绕过,我并不特别想更改我的代码以便我的测试工作因为这并不是很有帮助,我希望这些函数是私有(private)的,但我也希望能够测试它们。
只是想知道是否有人对这是否可能有任何想法,或者我是否需要将我的函数更改为 protected 或其他内容,然后继承该类进行测试?
最佳答案
通常的做法是仅对公共(public)函数进行单元测试,但您可以将测试类作为原始类的友元。类似这样的事情:
好友的声明应位于#define UNIT_TEST
标志内。
#include <iostream>
class ToTestClass
{
#ifdef UNIT_TEST
// ToTestClass declares TesterClass as a friend.
friend class TesterClass;
#endif
private:
void privateMethod()
{
std::cout << "hey there" << std::endl;
}
};
class TesterClass
{
public:
TesterClass()
{
ToTestClass totest;
// TesterClass now has access to ToTestClass's private members and methods.
totest.privateMethod();
}
};
int main()
{
TesterClass tester;
return 0;
}
关于c++ - 是否可以从测试类QT调用私有(private)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16275864/