我正在尝试使用QTTest构建一个简单的单元测试。文件MyTest.cpp看起来像:
#include <QtTest/QtTest>
class MyTest : public QObject {
Q_OBJECT
private slots:
void test() {
QVERIFY( true );
}
};
QTEST_MAIN( MyTest )
#include "mytest.moc"
现在我已经创建了一个简单的pro文件来生成可执行文件。但是在构建它时,编译器找不到创建的文件mytest.moc,因为它没有被创建。当我手动插入moc编译器时,一切正常。
亲文件看起来像:
QT +=testlib
TEMPLATE = app
TARGET = unittests
INCLUDEPATH += .
# Input
SOURCES += MyTest.cpp
有没有人有想法,我错过了什么?我使用的是VS2010,QT5.1和Windows7。
提前致谢, 金
答案 0 :(得分:3)
我在Linux上遇到过类似的问题。包含的moc文件未重新生成,因此与测试用例不匹配。原因是我正在混合阴影构建和源内构建,并且阴影构建中包含的moc实际上是来自源内构建的停滞的。
这种情况下的解决方案是从源内构建中删除moc文件,然后强制重建(清理然后构建)阴影构建中的测试类。它会触发moc文件的重新生成,之后所有测试都会正常运行。