如何使用QTestLib测试类的私有成员函数?

时间:2018-02-03 17:26:16

标签: c++ qt testing qtestlib

我正在使用QTestLib进行单元测试,我问自己如何测试我的类的私有成员函数。我想为内部共享库构建一个测试套件。

我在Qt的背景下有什么策略?

我认为通过公共成员函数测试私有成员函数可能是一个很好的起点:

class A {

   public:
      // add an extra function that is only relevant for testing
      int value() const {
         return theFunctionIWantToTest();
      }

   private:
      int theFunctionIWantToTest() {
         // implementation ..
      }      
}

但问题是我在测试后不需要在A级使用这个吸气剂。

我对QTestLib不是很有经验,到目前为止,我在Qt的Doc中找不到与此特定点相关的任何内容。

感谢。

1 个答案:

答案 0 :(得分:1)

个人偏好逆序的四种可能解决方案:

  1. 在包含类标题之前设置#define private public。不幸的是非便携式。 (幸运的是,有些人会说)。
  2. 将您的QTestLib测试类声明为类friend的{​​{1}}
  3. 将函数的要点移动到一个单独的文件中的专用函数中,该文件明确标记为私有API,并且要求成员函数调用。想想Qt本身使用的A标题。
  4. 仅限测试公共接口。即要么放弃测试私人功能的目标,要么接受该功能应该首先公开。
相关问题