gpt4 book ai didi

c++ - 是否可以从测试类QT调用私有(private)函数

转载 作者:搜寻专家 更新时间:2023-10-31 01:49:39 25 4
gpt4 key购买 nike

我正在用 QT 为我的项目实现一个测试类。我已经为所有公共(public)函数添加了测试,但是我想在我的测试中包含一些私有(private)函数。

显然这不会工作,因为它们是私有(private)成员函数,但我想知道是否可以绕过它,因为我想从测试用例中访问它们,我不是特别想更改我的代码以便我的测试工作因为那不是很有帮助,我希望这些函数是私有(private)的,但我也希望能够测试它们。

只是想知道是否有人对这是否可能有任何想法,或者我是否需要将我的功能更改为 protected 或其他东西,然后继承我的测试类?

最佳答案

通常的做法是只对公共(public)函数进行单元测试,但您可以将测试类作为原始类的友元。类似的东西:

friend 的 decleration 应该在 #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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com