【发布时间】:2014-01-01 20:35:23
【问题描述】:
我对我的项目进行了一些单元测试,这些测试是使用 QtTest 框架进行的。它是一个控制台应用程序,实际上我除了 QtTest 之外没有使用 Qt 的任何东西。
在我的电脑上它工作正常,但是我在 Travis 上设置持续集成,我得到:
lib_testapp: cannot connect to X server
我尝试使用 -platform offscreen 运行我的应用程序,正如我在另一个线程上看到的那样,但它似乎没有任何改变。
.pro 中有这些行:
TEMPLATE = app
CONFIG += console c++11
QT += testlib
我的main.cpp 看起来像这样:
class WatermarkingTests: public QObject
{
Q_OBJECT
private slots:
void initTestCase() { }
void test1() { someTest(); }
void cleanupTestCase() { }
};
QTEST_MAIN(WatermarkingTests)
#include "main.moc"
someTest() 是一个纯数学函数,它会调用QVERIFY。
谢谢!
【问题讨论】:
-
与 CI 相比,它是否在您的机器上本地工作?
-
是的,它工作正常。但是,当然,我有一个 X 服务器正在运行,我认为 Travis 上不是这样。
-
嗯,你当然可以在 VT 中尝试,而不是在你的 X 服务器中。是全输出吗?你能提供一个最小的测试代码吗?这也是哪个qt版本?此外,您应该拥有
QT = core testlib,这样您就不会默认添加 gui。否则,它可能会链接到 gui 库。 -
是的,如果我从计算机中的 VT 运行它,它仍然可以工作。 (但仅限于 -platform offscreen)
-
testlib 确实使用了 qcoreapplication。请展示测试代码,尤其是主宏。