0

cxxunitまたはその他の単体テスト フレームワーク ( QtTestLibを除く) を使用して qt ウィジェットをテストすることは可能ですか?

はいの場合、さらに 2 つの質問があります。

  1. どのように?
  2. valgrind を使用して単体テストを実行しているため、エラーが報告される可能性はありますか?
4

2 に答える 2

2

はい、できるはずです。特にcxxunitについてはわかりませんが、理論的には可能です。

  1. Qt オブジェクトを適切にテストするには、おそらくグローバル セットアップおよびティアダウン関数で QApplication オブジェクトを作成/破棄する必要があります。特に QApplication 機能をテストする場合を除き、テスト アプリケーションの実行全体に対して 1 つだけ作成する必要があります。これにより、ウィジェットのロジックの一部をテストできますが、ウィジェットの外観や UI の対話性を簡単にテストすることはできません。また、特定のアイテムのテストは、アプリケーションのイベント ループの実行に依存する場合があり、これはより困難です。
  2. Valgrind はいくつかのエラーを報告する場合があります。また、Qt のコードに関するエラー、特に再利用のためにアプリケーションの破棄に委ねられている静的割り当てに関するエラーを報告する場合もあります。
于 2010-12-02T16:14:57.357 に答える
1

UI をテストする場合は、 Squishなどの UI テスト ツールを使用することをお勧めします。単体テストは、ウィジェット自体ではなく、ウィジェットの背後にあるロジックをテストするのにより適していると思います。本当に Qt ウィジェットの単体テストを行いたい場合、QtTestLib よりも優れたソリューションはないと思います。

Valgrind: Squish 用の valgrind プラグインがあります。私はそれを自分で使用したことはありません。もちろん、他の単体テストは valgrind で簡単に実行できますが、これを完全に自動化するソリューションは知りません。x11 ライブラリなどのエラーが原因で単体テストが失敗しないように、所有しているコードの外部からのすべての警告を確実に抑制する必要があります。

于 2010-12-02T09:12:42.613 に答える