qtウィジェットをテストするのにcxxunitまたは他のユニットテストフレームワーク(QtTestLibを除く)を使用できますか?ctxtestフレームワークとvalgrindを使用してqtオブジェクトをテストする
はい、その後、さらに2つの質問がある場合:
- どのように?
- 私はvalgrindを使用して単体テストを実行しているので、これはいくつかのエラーを報告できますか?
qtウィジェットをテストするのにcxxunitまたは他のユニットテストフレームワーク(QtTestLibを除く)を使用できますか?ctxtestフレームワークとvalgrindを使用してqtオブジェクトをテストする
はい、その後、さらに2つの質問がある場合:
はい、可能です。私は特にcxxunitについてはわかりませんが、理論的には可能です。
UIをテストする場合は、SquishなどのUIテストツールを使用することをおすすめします。ユニットテスト私は、ウィジェット自体ではなく、ウィジェットの背後にあるロジックをテストするのに適しています。本当にあなたのQtウィジェットを単体テストしたいのであれば、QtTestLibよりも優れたソリューションはないと思います。
Valgrind:valgrind plugin for Squishがあります。私は自分自身でそれを使用していない。もちろん、他の単体テストもvalgrindで簡単に実行できますが、これを完全に自動化するソリューションはわかりません。 1つは、コードを所有している外部からのすべての警告を実際に抑制するようにしなければならない。 x11 libsは単体テストの失敗を引き起こさない。
私たちはすでにスキッシュを使用していますが、スキッシュはユニットテスト用ではありません。私はそれらの中で本当に重いロジックを持つウィジェットを見てきました。 –
1)しかし、どのように(例えば)マウスクリックをエミュレートするのですか? 2)qtを使用したときの実際のメモリ問題は、(少なくとも私にとっては)あまり明確ではありません。私はqtが親を持つウィジェットの破壊を管理していることを知っています。 –
@VJo:あなたのアプリケーションまたは単体テスト実行ファイルで実行します。親を持つウィジェットの破壊はvalgrindから見えるはずであり、したがってメモリリークとして現れません。しかし、Qtアプリケーションでvalgrindを実行した最後の時間には、Qtで作成された静的な割り当てがあったため、クリーンアップされませんでした。 –
デストラクタはvalgrindに表示されますが、さらに詳細を提供できます。単体テストのウィジェットの親は何でしょうか? QApplicationオブジェクトですか? QApplicationのどのリークが偽ですか? –