QNetworkAccessManager をモックする必要があるので、https://qt.gitorious.org/~niandong/qt/niandongs-qttools/commits/qtmockをダウンロードしました。
Qt 4.7.4 を使用して、QtCreator 2.3.1 で qtmock.pro をビルドできました。すべてのテストが正常に実行され、非常に興奮しました!
次に、プロジェクトのライブラリとそのすべての依存関係を使用できるように、Visual Studio でビルドする必要がありました。ここでは Visual Studio 2010 pro で Qt 4.8 を使用しています。メインの qtmock.pro をインポートし、最初に、フレームワークのみを含む (テストなどを含まない) 基礎となる qtmock プロジェクトをビルドしようとしました。それはうまく構築され、.lib と .dll ファイルを取得しました。次に、プロジェクトに必要な QNetwork のすべてのモック オブジェクトがある qtnetworkstub.pro をビルドしようとしました。以下は、ビルドのコマンドラインです。
/OUT:"......\lib\qtnetworkmock.dll" /NOLOGO /LIBPATH:"E:\QT\4.8.0\lib" /LIBPATH:"e:\QT\4.8.0\lib" / LIBPATH:"../../../lib" /DLL "../../../lib\qtmock.lib" "E:\QT\4.8.0\lib\QtTestd4.lib" "E :\QT\4.8.0\lib\QtCored4.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" " ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /MANIFEST /ManifestFile:"Win32\qtnetworkmock.dll.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker ' uiAccess='false'" /DEBUG /PDB:"E:.Qt.UnitTest\qtmock\lib\qtnetworkmock.pdb" /PGD:"E:\src\Qt.UnitTest\qtmock\lib\qtnetworkmock.pgd" /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE
私はtestLibとCoreのみを使用しています。
次に、次のリンクイン エラーが発生しました。
Error 4 error LNK2019: unresolved external symbol "public: static struct QMetaObject const QAbstractSocket::staticMetaObject" (?staticMetaObject@QAbstractSocket@@2UQMetaObject@@B) referenced in function "public: __thiscall QNetworkRequest::~QNetworkRequest(void)" (??1QNetworkRequest@@QAE@XZ) E:\src\Qt.UnitTest\qtmock\test\stublib\network\qnetworkrequest.obj qtnetworkstub
Error 5 error LNK2001: unresolved external symbol "public: static struct QMetaObject const QTcpSocket::staticMetaObject" (?staticMetaObject@QTcpSocket@@2UQMetaObject@@B) E:\src\Qt.UnitTest\qtmock\test\stublib\network\qnetworkreply.obj qtnetworkstub
Error 6 error LNK2001: unresolved external symbol "public: static struct QMetaObject const QTcpSocket::staticMetaObject" (?staticMetaObject@QTcpSocket@@2UQMetaObject@@B) E:\src\Qt.UnitTest\qtmock\test\stublib\network\qnetworkrequest.obj qtnetworkstub
Error 7 error LNK2001: unresolved external symbol "public: static struct QMetaObject const QSslSocket::staticMetaObject" (?staticMetaObject@QSslSocket@@2UQMetaObject@@B) E:\src\Qt.UnitTest\qtmock\test\stublib\network\qnetworkreply.obj qtnetworkstub
Error 8 error LNK2001: unresolved external symbol "public: static struct QMetaObject const QSslSocket::staticMetaObject" (?staticMetaObject@QSslSocket@@2UQMetaObject@@B) E:\src\Qt.UnitTest\qtmock\test\stublib\network\qnetworkrequest.obj qtnetworkstub
Error 1 error LNK2001: unresolved external symbol "public: static struct QMetaObject const QAbstractSocket::staticMetaObject" (?staticMetaObject@QAbstractSocket@@2UQMetaObject@@B) E:\src\Qt.UnitTest\qtmock\test\stublib\network\qnetworkaccessmanager.obj qtnetworkstub
Error 2 error LNK2001: unresolved external symbol "public: static struct QMetaObject const QAbstractSocket::staticMetaObject" (?staticMetaObject@QAbstractSocket@@2UQMetaObject@@B) E:\src\Qt.UnitTest\qtmock\test\stublib\network\qnetworkproxy.obj qtnetworkstub
Error 3 error LNK2001: unresolved external symbol "public: static struct QMetaObject const QAbstractSocket::staticMetaObject" (?staticMetaObject@QAbstractSocket@@2UQMetaObject@@B) E:\src\Qt.UnitTest\qtmock\test\stublib\network\qnetworkreply.obj qtnetworkstub
Error 9 error LNK1120: 3 unresolved externals E:\src\Qt.UnitTest\qtmock\lib\\qtnetworkmock.dll qtnetworkstub
私が得られないことは、私はこれらのオブジェクトを使用しておらず、そのプロジェクトのどこにも参照されていないということです。それらはすべて QIODevice から継承していますが、それがどれだけ役立つかはわかりません。
私は非常に行き詰まっており、このフレームワークを本当に使いたいので、助けていただければ幸いです (ユニットテストには本当に素晴らしいようです!)