2

だから、私はCppUnitテストを学ぼうとしています。CppUnit はmainテストを実行するために独自の関数を必要とするため、テスト スイートを独自のサブプロジェクトに移動することにしました。その哲学全体が間違っている場合は、修正してください。次に、これを Git サーバーにプッシュし、Gerrit トリガーで 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
4

2 に答える 2

0

JenkinsTestMain/ は INCLUDEPATH にないため、person.h が見つかりません。

JenkinsTestSuite.pro では、追加する必要があります

INCLUDEPATH += ../JenkinsTestMain

または、テストで #include を使用します。

また、INCLUDEPATH += ごとに DEPENDPATH += を追加することもお勧めします。そうしないと、person.h を変更しても persontest.cpp が再コンパイルされず、間違った動作やクラッシュにつながります。

ここでのもう 1 つの問題は、person.cpp が JenkinsTest の一部ではないことです。JenkinsTest 用に person.cpp をもう一度コンパイルするか、そのコードを共有ライブラリに配置する必要があります。

于 2012-09-22T09:12:26.613 に答える