【发布时间】:2013-05-23 10:00:01
【问题描述】:
我设法使用this tutorial 编写了一个“Gui 单元测试”。但是,当我编译我的代码时,我得到了这个:
PASS : testUnits::initTestCase()
PASS : testUnits::toUpper()
QFATAL : testUnits::testGui() QWidget: Must construct a QApplication before a QPaintDevice
FAIL! : testUnits::testGui() Received a fatal error.
Unknown file(0) : failure location
Totals: 2 passed, 1 failed, 0 skipped
********* Finished testing of testUnits *********
为什么它给我:必须在 QPaintDevice 之前构造一个 QApplication ?
【问题讨论】:
-
您可能遗漏了一些东西,请确保您遵循链接到的教程的每个细节。我没有使用过那个单元测试框架,但是
QTEST_MAIN(TestGui)应该足够聪明,可以在测试 GUI 时创建一个 QApplication 实例,除非整个框架都坏了。 -
另一件事,你有机会使用 Qt5 吗? Qt4 和 Qt5 之间的差异足以肯定会破坏该单元测试框架,如果存在的话,您需要一个 Qt5 版本。
-
您是否在使用 QtGui 库(即
QT += gui在您的.pro中)? -
@hyde:你是对的,我错过了在调用我的 Gui 单元测试之前放置我的 QApplication。因此,它正在寻找 QPaintDevice(即:QEditLine),而没有可用的 QApplication(请参阅我自己的答案中的代码)。再次感谢您提到 Qt4 和 Qt5 的差异问题,我会记住这一点,因为我正在研究两个 Qts,一个是 Qt4,另一个是 Qt5
-
@cmannett85:不,我不是,但如果我必须这样做,为什么我的代码可以工作。甚至在此之前,我可以向您保证我的单元测试工作正常,因为它给了我一个“失败”的输出结果。我的问题是为什么它失败了?但是既然你提到了,那
QT += gui到底做了什么?
标签: c++ qt unit-testing qt-creator