15

何かが足りないのかもしれませんが、QtTest フレームワーク用に提供されている唯一のチュートリアルで QString クラスをテストしているのは本当にばかげているように思えます。

単体テストの典型的なユースケースは....自分で書いたクラスをテストすることですが、チュートリアルでテストするために別のプロジェクトでクラスを参照する方法については言及されておらず、Googleも私を失敗させました(そして私は本当に疑っています)クラスをコピーして貼り付けるのが良い方法です)。

私は、QtTest について言及していない 3 冊の異なる Qt 本をざっと読んでみました。

4

2 に答える 2

9

次のように、.pro ファイル内の他のプロジェクト ディレクトリへのインクルード パスを追加できます。

INCLUDEPATH += <directory>

次に、含めているヘッダーを見つけることができるはずです。

編集:コメントに基づく

それはまったく別の話です。通常、未定義の参照は、依存関係がないことを意味します。これは通常、次の 2 つのいずれかで解決できます。

最も簡単な方法は、欠落しているソース ファイルをインクルードすることです。

INCLUDEPATH += ../myotherproject/
SOURCES = main.cpp ../myotherproject/missingsource.cpp

おそらく、より良い解決策は、再利用可能なコードをライブラリとしてコンパイルしてリンクすることによって公開することです。たとえば、Windows では .DLL または .LIB、Linux では .SO または .A です。

INCLUDEPATH += ../myotherproject/
win32:LIBS += ../myotherproject/linkme.lib

発生している具体的なエラーを教えていただけますか?

于 2012-08-03T23:24:21.600 に答える
9

メイン アプリケーション プロジェクトと単体テスト プロジェクトの両方で必要なすべてのソースとヘッダーを 1 つの .pri (.pro インクルード) ファイルに入れることをお勧めします。このファイルをメイン プロジェクトに配置します。次に、このファイルを両方のプロジェクトに含めます。

SOURCES +=メイン プロジェクトに新しいクラスを追加するたびに、QtCreator は .pro ファイルに行と行を自動的に追加しHEADERS +=ますが、それらを .pri ファイルに入れたいので、後で手動で移動する必要があることに注意してください。QtCreatorにどこに置くかを伝える解決策はないと思います。


主なプロジェクト:

myproject.pro
myproject.pri
main.cpp
someclass.h
someclass.cpp

myproject.pro:

QT += ...
TARGET = ...
...

SOURCES += main.cpp       # "private" to this project
include(myproject.pri)    # needed in unit test

myproject.pri:

SOURCES += someclass.cpp
HEADERS += someclass.h

単体テスト プロジェクト:

unittest.pro
main.cpp
test.h
test.cpp

unittest.pro:

QT += ...
TARGET = ...
...

SOURCES += main.cpp test.cpp
HEADERS += test.h

# include the classes from the main project:
INCLUDEPATH += ../myproject/
include(../myproject/myproject.pri)
于 2012-08-12T03:58:16.100 に答える