質問

私は異なる機会に放出されるいくつかの信号を定義しました:

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にとってかなり新しい)。

qsignalspy 変更する必要があるようです既存のクラス? 「外部」アプローチもありませんか?

スロットのテスト方法についてはたくさんの文書があります - がシグナルに関連していますか? 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:

であなたのための良い出発点です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top