単体テスト プロジェクトの依存関係に問題があります。
私のプロジェクト構造は次のとおりです。
MyProject
|---MyProject.pro
|---src
| |---src.pro
| |---ClassA.h
| |---ClassA.cpp
| |---ClassB.h
| |---ClassB.cpp
|
|---tests
|--tests.pro
|--testClassA.cpp
MyProject.pro:
TEMPLATE = subdirs
SUBDIRS = src tests
src.pro:
TEMPLATE = app
TARGET = someApp
HEADERS += classA.h classB.h
SOURCES += classA.cpp classB.cpp
ClassA が ClassA.cpp で ClassB を呼び出すとします。
void ClassA::someFunctionInClassA()
{
ClassB b;
}
ここで、ClassA の単体テストを行います。私はそうする2つの方法を見つけました。まず、src-Subproject をライブラリに変換します (TARGET = src.pro の lib)。次に、次の行を tests.pro に追加すると、すべて問題ありません。
LIBS += ../libSrc.so
2 つ目は、test.pro で ClassA によって使用されるすべてのファイルに名前を付けることです。これは、tests.pro が次のようになることを意味します。
TARGET = testclassA
TEMPLATE = app
/*...*/
HEADERS += ../src/ClassA.h \
../src/ClassB.h
SOURCES += testClassA.cpp \
../src/ClassA.cpp \
../src/ClassB.cpp
最初の解決策 (src-project を lib に変換する) を使用できないため、2 番目の解決策を使用する必要があります。それらの 1 つだけをテストしたい場合でも、すべてのソース/ヘッダーに名前を付ける必要がありますか? アドバイスありがとうございます!