問題タブ [qtestlib]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unit-testing - Qtにはどのユニットテストフレームワークを使用する必要がありますか?
クロスプラットフォームのGUIを必要とする新しいプロジェクトを立ち上げたばかりで、GUIフレームワークとしてQtを選択しました。
ユニットテストのフレームワークも必要です。約1年前まで、C ++プロジェクトには社内で開発された単体テストフレームワークを使用していましたが、現在は新しいプロジェクトにGoogleTestを使用するように移行しています。
QtアプリケーションにGoogleTestを使用した経験のある人はいますか?QtTest / QTestLibはより良い代替手段ですか?
プロジェクトのGUI以外の部分でQtをどれだけ使用したいかはまだわかりません。おそらく、QtベースのGUIへの小さなインターフェイスを備えたコアコードでSTL/Boostを使用することをお勧めします。
編集:多くの人がQtTestに傾いているようです。これを継続的インテグレーションサーバーと統合した経験のある人はいますか?また、新しいテストケースごとに個別のアプリケーションを処理する必要があると、多くの摩擦が発生するように思われます。それを解決する良い方法はありますか?Qt Creatorにはそのようなテストケースを処理する良い方法がありますか、それともテストケースごとにプロジェクトを用意する必要がありますか?
qt - QTest チュートリアルの理解を助ける
QTestLib のチュートリアルでは、ファイル「testgui.moc」および「testqstring.moc」への参照があります (1 つの例はここにあります: http://www.englishbreakfastnetwork.org/coverage/build/qt-copy/examples /qtestlib/tutorial3/.moc/debug-shared/testgui.moc )。これらには、テストの構成に必要ないくつかの情報が含まれています。残念ながら、このチュートリアルでは、この情報の内容や変更方法について説明していません。具体的には、次の行を参照しています。
さて、私のQTの理解に基づいて、 qt_meta_stringdata_TestQString 変数は、メソッドの名前が追加されたクラス参照です-何かの行METHOD(toUpper())
で実行される可能性がありますが、これが他の何かに関連しているかどうか、またどのように関連しているかはわかりません結果のフォーマット。
一般的に、何が起こっているのか知りたいです。ファイルの上部にあるコメントは、「メタ オブジェクト コード」に関係していると述べており、後でオーバーライドするメソッドに基づいて、それは明らかなようです。
ただし、さらに重要なことは、その qt_meta_data 配列を変更して、より多くの関数を呼び出したり、上記の関数の名前を異なる長さの名前に変更したりできるようにする方法を知りたいです (メソッド名を toUpper から切り替える) toApple に変更しても問題はないようですが、toUppercase または toUp に変更すると、テスト アプリケーションが期待どおりに動作しなくなります)。
***************************** アップデート ******************** ************
以下にすでに受け入れられている回答がありますが、これを追加する必要があると思いました。これらのファイルがチュートリアルにあった唯一の理由は、チュートリアルの作成者がクラスに .h および .cpp ファイルを持たないと決定したためです。それ以外の場合は役に立ちません。
qt - QTestLib: 文書化されていないコマンド ライン引数 -chart
Qt 4.6 では、QTestLib はコマンドライン引数 "-chart" をサポートしています (ただし、これは文書化されていません)。
report.html が作成されますが、Firefox 3.6 と IE8 のどちらも「Test」という見出し以外は表示できません。html ファイルを調べると、いくつかの JavaScript とテスト結果が含まれているため、表示するものがあるはずです。
-chart は文書化されていないため、正しい方法で使用できるかどうかわかりません。
ヒントはありますか?
ありがとう。
qt - Qtestlib:QNetworkRequestが実行されません
Webサーバーへの非同期リクエストをテストしたいと思います。そのために、数行のコードをすばやく試すための簡単な単体テストを作成しています。
問題は、reqFinished()に到達しないことです。単純なQEventLoopと、nam-> get(req);の直後にloop.exec()がある場合。リクエストが実行されます。
ヒントはありますか?すべてのユニットテストでloop.exec()を使用する必要がありますか?
unit-testing - QTestLibでのユニットテスト-単一のテストの実行/クラスでのテスト/すべてのテスト
QTestLibを使い始めたばかりです。マニュアルとチュートリアルを読みました。テストの作成方法は理解していますが、それらのテストを実行しやすくする方法がわかりません。私のユニットテストのバックグラウンドはNUnitとMSTestです。これらの環境では、右ボタンをクリックするだけで、単一のテスト、単一のテストクラスのすべてのテスト、またはプロジェクト全体のすべてのテストの実行を切り替えるのは簡単でした(少なくともGUIを使用)。
QTestLibに表示されているのは、QTEST_MAIN
マクロを使用して単一のクラスでテストを実行してから、各ファイルを個別にコンパイルしてテストすることだけです。または、を使用QTest::qExec()
しmain()
てテストするオブジェクトを定義し、それを手動で変更して、テストクラスを追加/削除するときに再コンパイルします。
私は何かが欠けていると確信しています。簡単にできるようにしたいと思います:
- 単一のテストメソッドを実行する
- クラス全体でテストを実行する
- すべてのテストを実行する
それらのいずれかが適切なセットアップ/ティアダウン関数を呼び出します。
編集:バウンティが利用可能になりました。より良い方法、またはそれを処理するGUIテストランナーが必要です。テスト駆動環境でQtTestを使用している場合は、何が機能しているかをお知らせください。(スクリプト、テストランナーなど)
qt - QCOMPARE マクロを使用してイベントを比較する方法
マウスクリックを受け入れる空白のウィンドウをポップアップする MyWindow クラスがあります。マウスクリックイベントを単体テストする必要があります
コードスニペット:
マウスのクリックをテストする方法mywindow
. 単体テストのマウスイベントに対するより良いアプローチはありますか?
ありがとう、ベルズ
c++ - QT Qtestlib、ユニットテスト
QTestlibを使用してクラス実装の単体テストを作成する場合(それを理解しようとする場合)、どのように実行しますか。(以下の単純なクラスの単体テストは、QTestlibフレームワークを理解しようとしている他の簡単な方法で実行でき、それが本当に必要かどうかを知っています)
単純なクラスを考えてみましょう(物事を本当に明確にするためだけに)
このクラスをテストするには、QTestlibをどのように使用する必要がありますか?いくつかの情報は素晴らしいでしょう。
これが正しい方法ではない場合。お知らせ下さい。また、自動テストに関するいくつかの情報があればいいでしょう。
qt - Qtestlib ログ ウィンドウ
プログラムを qtestlib にリンクし、QTest を含めます。しかし、構成をリリースまたはデバッグに設定しても、アプリケーションが起動すると、すべてのqDebugsを促すログウィンドウが表示されます。アプリケーションの起動時にログ ウィンドウを開かずに QTest を含めることはできますか? プログラムに QTest の機能が必要です。
pro ファイルで以下のオプションを試してみましたが、これは役に立たなかったことに注意してください 1) CONFIG += qtestlib CONFIG -= console
2) -silent オプションを試してみましたが、まだログ ウィンドウが表示されます。
qInstallMsgHandlerを使用して生成している別のファイルにログをキャプチャしているため、アプリケーションにこのログウィンドウは必要ありません。
c++ - Qt UIテスト:QTest::keyPressを実行できません
MyForm
から継承したクラスがありQMainWindow
ます。
これが私のコードです:
しかし、それを使用QTest::keyPress
すると、次のようになります。
エラー:keyPress(std :: auto_ptr *、Qt :: Key)の呼び出しに一致する関数がありません
何か案は?
c++ - Qt: 現在実行中のウィンドウを取得するにはどうすればよいですか?
キーの押下をシミュレートするテストアプリを作成しています。キーを押すたびにどのウィンドウが表示されるかを知りたいです。これがコードブロックです。
ここで 0 を押すと、ウィンドウが表示されます。後で QCompare/評価できるように、それがどのウィンドウかを確認したいと思います。
何か案は?
更新しました:
使用するとセグメンテーション違反が発生します