1

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

  • 错误:无法将“MainWindow”转换为其私有基类“Ui_MainWindow”
  • 'pushButton' 是 'Ui_MainWindow' 的私有成员
  • 此处受私有继承的约束

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

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

我在这里实际上想要实现的是在 MainWindowTest 的私有区域中创建一个 MainWindow 实例,然后编写几个单元测试来检查小部件的存在,然后进行一些基于键盘和鼠标事件的测试。但是,因为我什至无法访问小部件,所以这样做非常困难。

我已经在网上浏览了几个“解决方案”,但它们似乎都不是干净的解决方案。我希望现在能够执行 QVERIFY2(win.pushButton, "pushButton was not created.") 之类的事情,但正如我所说,pushButton 是不可访问的。

4

0 回答 0