C++ の一般的な単体テスト フレームワークと Qt の QTest を比較できますか?
(cppunit、Boost テスト、Google テストなど)
メリット・デメリットは?ありがとうございました。
注: GUI テストは私たちにとってあまり重要ではありません。
C++ の一般的な単体テスト フレームワークと Qt の QTest を比較できますか?
(cppunit、Boost テスト、Google テストなど)
メリット・デメリットは?ありがとうございました。
注: GUI テストは私たちにとってあまり重要ではありません。
QTest は、UI コンポーネントの単体テスト用に私が知っている唯一のフレームワークです。これを使用してある程度の成功を収めましたが、通常の単体テストでは Boost.Test に固執します。
私の経験に基づくと、Qt テスト フレームワークはお勧めできません。考えられる2つの利点は次のとおりです。
主な欠点:
std::chrono::duration
、比率が異なる 2 つを比較することはできませんが、同等に比較できます。ただキャストするのは非常に面倒ですQCOMPARE
Boost はシンプルで使いやすく、驚くことなくほとんどの場合にうまく機能します。
Google テスト フレームワークの主な利点は、モックのサポートです。ただし、この機能は他のフレームワークにも使用できます。予想される呼び出しシーケンスの定義、カスタムマッチャー、人間が読めるアサーションなど、多くの優れた機能があります。ただし、これらの機能に慣れるまでには時間がかかります (必要な場合)。
もう 1 つのフレームワークについて言及したいと思います。Catch です。これはヘッダーのみのフレームワークであり、アサーションはほとんどありません。例えば。REQUIRE(a == b)
との値は機能し、失敗するa
とb
解決されます。フィクスチャ クラスやボイラープレートは必要ありません。テスト ケースでセクションを定義するだけで、さまざまなセクションで N 回実行されます。それは非常に簡単で、人間が読めるものです。一方で、デフォルトではコンパイルに時間がかかります。