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

标签 c++ qt testing

我正在 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/

相关文章:

multithreading - 从另一个线程读取Qt小部件可以吗?

ruby-on-rails-3 - 使用 Rails 控制台测试 Rails/Rack 应用程序

c# - 如何使用 SWIG 生成的接口(interface)在 C# 中正确向下转换?

c++ -\n 和 std::endl 有什么区别

linux - 可以从 Qt 运行程序但不能从 konsole 运行它

java - 无法在请求中设置 cookie

java - ModelJUnit运行测试一段时间

c++ - 用 QProcess 包装 SFTP

c++ - 当参数是函数参数包时,在部分排序期间推导模板参数

c++ - 强制Qt摄像机视频格式