モニタ/出力放出QT-Signal.
-
21-12-2019 - |
質問
私は異なる機会に放出されるいくつかの信号を定義しました:
signals:
void buttonXClicked(int x);
void numButtonsChanged(int num);
.
今度は、これらの信号のように見え、パラメータが正しい場合には見たいです。信号を監視するためのいくつかのアプローチがあるようです。
post こちらのROHANPMは、ここで詳しく指定されているパラメータ-vs
を参照します。
http:// qt-project。 org / doc / qt-4.8 / qtestlib-manual.html#qtestlib-command-line-arguments
これは私が必要とする情報を得るエレガントで迅速な方法のようです。
しかし正直に言うと、私が-vs
を実行しなければならない場所を理解することができません。 qmake
の一部ではありません。それ以外の場所はそれを置く必要がありますか? (私はQTにとってかなり新しい)。
スロットのテスト方法についてはたくさんの文書があります - がシグナルに関連していますか? printf
またはcout
をどこかに使用できますか?
解決
MOCとその機能について読んでいる間、私はこのアイデアを得ました。(少なくともNetBeansを使用中)私はファイルMOC_BUTTONTEST.CPPをファイルに追加します。内部は:
と呼ばれる方法です// SIGNAL 0
void ButtonTest::buttonXClicked(int _t1)
{
void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
QMetaObject::activate(this, &staticMetaObject, 0, _a);
}
.
私はそれがとても簡単だったとは信じられませんでしたが、私はただ
を追加しましたstd::cout <<"buttonXClicked: "<<_t1;
.
そしてそれは私が欲しいものを正確にするようです。
他のヒント
リンクされたドキュメントとして
:
利用可能なすべてのテストデータを使用してToupperテスト機能を実行し、TESTDATAをゼロと呼ばれるteintテスト機能(指定されたテストデータが存在しない場合、関連テストは失敗します)。
/myTestDirectory$ testMyWidget -vs -eventdelay 500
.
TestMyWidgetはテストバイナリ構築です。これが-vs
のマニュアルになります。
-VS.
を出射するすべての信号を出力
ヘルプ出力をgrep grep:
/myTestDirectory$ testMyWidget --help | grep "\-vs"
-vs outputs every signal that gets emitted
.
QTestLib
ベースの単体テストを書くことに問題がある場合は、QT 4:
所属していません StackOverflow