所以,我正在尝试学习CppUnit测试。由于CppUnit需要它自己的main
函数来运行测试,我想我会将我的测试套件移动到它自己的子项目中。如果整个哲学都错了,请纠正我。然后我将把它推送到我的Git服务器并尝试在Gerkins触发器上使用Jenkins运行测试。最后,我正在努力学习Jenkins,我正在创建一个简单的项目来帮助我。但是,当我编译时,我遇到了许多与JenkinsTestSuite
中无法在JenkinsTestMain
中找不到文件的文件相关的问题。例如......
persontest.cpp:5:20: error: person.h: No such file or directory
In file included from persontest.cpp:7:
我的(基本)目录结构就是这样......
JenkinsTest | -JenkinsTestMain | -JenkinsTestSuite
我的JenkinsTest.pro文件如下所示:
TEMPLATE = subdirs
SUBDIRS += \
JenkinsTestSuite \
JenkinsTestMain
CONFIG += ordered
SUBDIRS += JenkinsTestMain
我的JenkinsTestMain.pro文件如下所示:
!include(../common.pri) {
error(Couldn't find the common.pri file!)
}
QT += core
QT -= gui
TARGET = JenkinsTest
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp \
person.cpp
HEADERS += \
person.h
我的JenkinsTestSuite.pro文件如下所示:
!include(../common.pri) {
error(Couldn't find the common.pri file!)
}
QT += core
QT -= gui
TARGET = JenkinsTest
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp \
persontest.cpp \
HEADERS += \
persontest.h
我的common.pri文件如下:
INCLUDEPATH += . ..
WARNINGS += -Wall
TEMPLATE = lib
UI_DIR = .uics
MOC_DIR = .mocs
OBJECTS_DIR = .objs
答案 0 :(得分:0)
JenkinsTestMain /不在INCLUDEPATH中,因此找不到person.h。
在JenkinsTestSuite.pro中,您必须添加
INCLUDEPATH += ../JenkinsTestMain
或者,在测试中使用#include。
我还建议为每个INCLUDEPATH + =添加DEPENDPATH + =,否则对person.h的更改不会触发persontest.cpp重新编译,这会导致错误的行为和崩溃。
另一个问题是person.cpp不是JenkinsTest的一部分。您必须为JenkinsTest再次编译person.cpp,或者将该代码放入共享库中。
答案 1 :(得分:0)
这可能不是OP的情况,但由于不同的原因,我遇到了同样的问题。
如果您的项目自行编译正常,但在构建为子项目时失败,则可能是由于另一个项目使用它而遗漏了include文件夹中的内容。例如:如果项目A使用项目B,而项目B依赖于文件X,则可能会收到错误,说项目B无法找到文件X,因为项目A在包含路径中没有它。 (即使项目B包含它也很好)
在项目A中添加依赖项包括qmake中的路径为我修复了问题。