1

さまざまな機会に発行されるいくつかのシグナルを定義しました。

signals:
    void buttonXClicked(int x);
    void numButtonsChanged(int num);

ここで、これらの信号がどのように見えるか、およびパラメーターが正しいかどうかを確認したいと思います。信号を監視するにはいくつかのアプローチがあるようです。

ここの投稿では、rohanpm はここで指定されているパラメーターを参照しています-vs

これは、必要な情報を取得するエレガントで迅速な方法のようです。でも、正直なところ、どこで、どのように走らなければならないのか、理解できません-vs。の一部ではありませんqmake。他にどこに置く必要がありますか?(私はqtにかなり慣れていません)。

QSignalSpyに関連して、既存のクラスを変更する必要があるようですか? 「外部」アプローチもありませんか?

スロットをテストする方法に関するドキュメントはたくさんありますが、シグナルに関連していますか? printfまたはcoutどこかで使用できますか?

4

2 に答える 2

1

このアイデアは、モックとその機能について詳しく読んでいるときに思いつきました。(少なくとも NetBeans を使用している間) ファイル ButtonTest.cpp にファイル 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;

そして、それは私が望むことを正確に行うようです。

于 2014-06-08T16:35:18.603 に答える
0

リンクされたドキュメントが書いているように:

使用可能なすべてのテスト データで toUpper テスト関数を実行し、ゼロと呼ばれる te​​stdata で toInt テスト関数を実行します (指定されたテスト データが存在しない場合、関連するテストは失敗します)。

/myTestDirectory$ testMyWidget -vs -eventdelay 500

ここで、testMyWidget はビルドされたテスト バイナリです。-vsドキュメントは次のとおりです。

-vs は、放出されるすべてのシグナルを出力します

ヘルプ出力を grep すると、さらにいくつかのドキュメントもあります。

/myTestDirectory$ testMyWidget --help | grep "\-vs"
-vs outputs every signal that gets emitted

QTestLibベースの単体テストを書くのに問題がある場合、これは Qt 4 の良い出発点です:

QTestLib マニュアル

于 2014-06-03T15:34:54.753 に答える