如何从Qt测试单元测试类访问和测试Qt窗口的私有小部件?

时间:2019-06-11 21:31:24

标签: c++ qt unit-testing user-interface qttest

我正在尝试对Qt Widgets应用程序中的单个小部件进行单元测试(使用Qt测试),例如menuBar,pushButton等。该项目已设置为Subdirs项目,其中Qt应用程序和GUI测试子项目有自己的目录和.pro文件。问题是,我无法从测试类(MainWindowTest)访问驻留在MainWindow中的任何小部件,如编译器所说:

  • 错误:无法将“ MainWindow”强制转换为其私有基类“ Ui_MainWindow”
  • 'pushButton'是'Ui_MainWindow'的私有成员
  • 在这里受到私有继承的限制

我试图将MainWindowTest声明为MainWindow中的一个朋友,但没有帮助。 我还尝试过在单独的标头中声明MainWindowTest,然后将其包含在mainwindow.h中(仍然将MainWindowTest声明为朋友),但这也无济于事。

只需在Creator中创建默认的subdir Widget应用程序和GuiTest AutoTest子目录项目,便会为此生成所有必需的代码。

我实际上想在这里实现的是,在MainWindowTest的私有区域中创建一个MainWindow实例,然后编写一些单元测试以检查小部件的存在,然后基于键盘和鼠标事件进行一些操作测试。但是,由于我什至无法访问这些小部件,因此很难做到这一点。

我已经在网上浏览了几个“解决方案”,但是似乎都不是干净的解决方案。我希望能够立即执行QVERIFY2(win.pushButton,“未创建pushButton”。),但正如我所说,pushButton无法访问。

0 个答案:

没有答案