QtTest:不会生成moc文件

Kim*_*ing 4 c++ qt

我正在尝试使用 QTTest 构建一个简单的单元测试。文件 MyTest.cpp 如下所示:

#include <QtTest/QtTest>

class MyTest : public QObject {
    Q_OBJECT

private slots:
    void test() {
        QVERIFY( true );
    }
};

QTEST_MAIN( MyTest )
#include "mytest.moc"
Run Code Online (Sandbox Code Playgroud)

现在我创建了一个简单的配置文件来生成可执行文件。但是在构建它时,编译器无法找到创建的文件 mytest.moc,因为它已被创建。当我手动安装 moc 编译器时,一切工作正常。

专业文件如下所示:

QT +=testlib
TEMPLATE = app
TARGET = unittests
INCLUDEPATH += .

# Input
SOURCES += MyTest.cpp
Run Code Online (Sandbox Code Playgroud)

有谁知道我错过了什么?我使用的是VS2010、QT5.1和Windows7。

预先感谢,金

fgi*_*eau 5

我在 Linux 上也遇到了类似的问题。包含的 moc 文件未重新生成,因此与测试用例不匹配。原因是我混合了影子构建和源内构建,并且影子构建中包含的 moc 实际上是源内构建中停滞的 moc。

这种情况的解决方案是从源内构建中删除 moc 文件,然后在影子构建中强制重建(清理然后构建)测试类。它会触发 moc 文件的重新生成,之后所有测试都会正常运行。