7

C++ の一般的な単体テスト フレームワークと Qt の QTest を比較できますか?

(cppunit、Boost テスト、Google テストなど)

メリット・デメリットは?ありがとうございました。

注: GUI テストは私たちにとってあまり重要ではありません。

4

3 に答える 3

5

QTest は、UI コンポーネントの単体テスト用に私が知っている唯一のフレームワークです。これを使用してある程度の成功を収めましたが、通常の単体テストでは Boost.Test に固執します。

于 2011-02-02T21:19:59.260 に答える
2

私の経験に基づくと、Qt テスト フレームワークはお勧めできません。考えられる2つの利点は次のとおりです。

  • QSignalSpy: 送信されたシグナルを検証します (Qt でのみ有効)。ただし、これは他のテスト フレームワークでも使用できます。
  • パラメータ化されたテストを書きやすい

主な欠点:

  • フィクスチャはデフォルトではサポートされていません。setUp、tearDown で回避する必要があります。
  • QCOMPARE は、異なるタイプの値を比較できません。たとえばstd::chrono::duration、比率が異なる 2 つを比較することはできませんが、同等に比較できます。ただキャストするのは非常に面倒ですQCOMPARE

Boost はシンプルで使いやすく、驚くことなくほとんどの場合にうまく機能します。

Google テスト フレームワークの主な利点は、モックのサポートです。ただし、この機能は他のフレームワークにも使用できます。予想される呼び出しシーケンスの定義、カスタムマッチャー、人間が読めるアサーションなど、多くの優れた機能があります。ただし、これらの機能に慣れるまでには時間がかかります (必要な場合)。

もう 1 つのフレームワークについて言及したいと思います。Catch です。これはヘッダーのみのフレームワークであり、アサーションはほとんどありません。例えば。REQUIRE(a == b)との値は機能し、失敗するab解決されます。フィクスチャ クラスやボイラープレートは必要ありません。テスト ケースでセクションを定義するだけで、さまざまなセクションで N 回実行されます。それは非常に簡単で、人間が読めるものです。一方で、デフォルトではコンパイルに時間がかかります。

于 2017-09-11T07:25:16.260 に答える