73

今後数年間のC++ユニットテストフレームワークを設定する過程で、GoogleTestCppUnitを最終候補に挙げました。私は両方の経験があり、私の好みはGoogleTestです。とにかく上司を説得するためにいくつかの事実が必要なので、マニュアル、ウィキページ、いくつかの情報源など、インターネットでいくつか読んだ。私はGoogleTestの利点と単一のCppUnitの利点(グラフィックテストランナー)のリストを思いついた。ここでは、それらは認識された有用性によって順序付けられています。

  • INSTANTIATE_TEST_CASE_Pは、デカルト積を含む、必要なパラメーターのセットを使用してテストケースをインスタンス化します。
  • プライベートクラスメンバーをテストするためのFRIEND_TEST(すべてのレガシーコード用)
  • アサートをブレークポイントに変える
  • 致命的ではない主張
  • 「箱から出して」googlemock統合
  • 自動テスト検出、それらを列挙する必要はありません
  • テストは無効および有効にできます
  • 実行するテストは、名前パターンを使用して選択できます
  • 値/型パラメーター化されたテスト
  • ユーザー定義の述語がアサートします
  • 死のテスト
  • はるかに豊富な一連のアサート
  • タイプがアサートします
  • サブルーチンでのアサート
  • <<を使用して、追加のデバッグ情報をアサートに追加できます。
  • RecordPropertyは、プロパティの最後の値をXML出力に出力します
  • SCOPED_TRACEは、サブルーチンまたはループの内部から発生するアサーション障害のコンテキストを理解するのに役立ちます。
  • xUnit XML出力。XSLT変換を行わなくても、Jenkinsですぐに表示できます。
  • カスタムタイプのプリンタをサポート
  • テスト表示にかかる時間(これはCppUnitでも可能だと思いますが、まだ理解していません)
  • テストイベントリスナーAPI(ユーザー定義プラグイン)
  • テストシャッフル
  • 例外なしとRTTI

上記のすべてがCppUnitでサポートされていないと仮定して正しいですか?不足しているCppUnitで 利用できない便利なGoogleTest機能はありますか?

最後になりましたが、GoogleTestに欠けている優れたCppUnit機能はありますか?

ありがとう!

4

3 に答える 3

7

古いバージョンの gcc コンパイラを使用している場合、またはテスト中のコードが vxWorks (または VxSim) で実行されている場合は、Googletest フレームワークよりも cppUnit の方が適している可能性があります。

一方、googletest フレームワークのもう 1 つの機能は、3 つの異なるレベルのセットアップ/ティアダウンが利用できることです。

  • プログラムごと
  • テスト ケース (またはテスト グループ) ごと
  • 個々のテスト インスタンスごと

これが cppUnit でサポートされているかどうかはわかりませんが、特にレガシー システムでは非常に便利です。

また、Eclipse CDT 用の googletest プラグインもあります。

于 2011-11-03T08:02:39.997 に答える
6

xUnit++を見ていない場合は、利用可能なもの (gtest を含む) に不満があったため、特に作成しました。あなたのリストのほとんどはサポートされています。サポートされていない場合、それが「必須」の機能である場合は、おそらく喜んで追加します。

于 2012-10-25T05:00:44.077 に答える
4

それらは私が見る利点です。いくつかの GUI テスト ランナーがあります。

  1. https://github.com/ospector/gtest-gbar
  2. https://github.com/SandyChapman/gtest-runner-qt

私は最初のものを使用しましたが、開発中であり、いくつかの作業が必要ですが、かなりうまく機能します。他のオプションがあるかどうかはわかりません。

于 2011-11-03T20:38:23.050 に答える