走り方qtestlibユニットテストからQtCreator
-
25-09-2019 - |
質問
に展開しているGUIアプリケーションにQt Creatorと書きたいなあのユニットテストします。
しましたが、 このガイド をユニット試験QtTestlibのプログラム集です。だがしかったですか。してほしいと思いますが、これ以前は、GUIアプリが開始され徹底的な検討を加え、そのデバッグおよびたない場合、リリース。
解決 3
最後にアプリを起動する前にテストを実行する方法を考え出します。
私は、テストを実行するためのテストクラス内の1つの静的メソッドを追加します:
#include <QtTest/QtTest>
TestClass::runTests()
{
TestClass * test = new TestClass();
QTest::qExec(test);
delete test;
}
主な機能には、実行します:
int main(int argv, char *args[])
{
::TestsClas::runTests();
QApplication app(argv, args);
MainWindow mainWindow;
mainWindow.setGeometry(100, 100, 800, 500);
mainWindow.show();
return app.exec();
}
試験結果をアプリケーション出力ウィンドウに印刷されます。
他のヒント
あなたの主なプロジェクトにテストコードを入れないでください。あなたはそのを構築し、実行し、あなたのユニットテストのために別のプロジェクトを作成する必要があります。テストを実行するにはあなたの主なプロジェクトを変更しないでください。
理想的には、あなたはそれを設定し、ビルドサーバーが自動的にあなたのユニットテストプロジェクト起動し、あなたのリリースを構築する必要があります。することができますスクリプトこれます。
あなたのユニットテストを実行するには、メインアプリケーションをハックしないでください。 (それは完全にコンパイルされ、統合された後、プログラムがどのように機能するか、すなわちテスト)を使用すると、統合レベルのテストを行う必要がある場合、あなたは、外部スクリプトのソースからプログラムをテストすることを可能にするさまざまな統合テストフレームワークを使用する必要があります。 FrogLogicのスキッシュのは、1つのそのようなフレームワークです。
利用の複数のターゲットに、プリプロセッサフラグこのために:
int main(int argv, char *args[])
{
#ifdef TEST
::TestsClas::runTests();
#endif
QApplication app(argv, args);
MainWindow mainWindow;
mainWindow.setGeometry(100, 100, 800, 500);
mainWindow.show();
return app.exec();
}
その後の事業区画に追加して新しいテストによる複製"Debug".下の構築、追加の引数を作ることが
CXXFLAGS+=-DTEST
この試験は試験対象ではなく、デバッグをリリース。
Qtの作成者は、まだ明示的に(Qtのクリエーター2.0betaまで)この時点でユニットテストを実行することはできません。だから、当分の間は、手動テストを開始する必要があります。
あなたの代わりにqmakeののcmakeのようにビルドシステムを使用している場合は、ビルドプロセス自体の一部として自動的にユニットテストを実行しようとすることができます。残念ながら、私はqmakeのでこれを行うための任意の方法を認識していないです。 CMakeのはないとしてもqmakeのようものの、Qtの作成者によってサポートされています。