GoogleTestとCppUnit:事実

C ++単体テストフレームワークを次の年に設定する過程で、 GoogleTest CppUnit を選びました。私は両方の経験があり、私の好みはGoogleTestです。とにかく私の上司を説得するために、私はいくつかの事実が必要なので、マニュアル、wikiページ、およびいくつかの情報源を含むインターネット上でいくつかの読書をしました。私は、GoogleTestの利点とCppUnitの利点(グラフィックテストランナー)のリストを思いつきました。ここでは、知覚される有用性によって順序付けられます。

  • INSTANTIATE_TEST_CASE_P to instantiate a test case with any set of parameters you want, including Cartesian products
  • FRIEND_TEST for testing private class members(for all the legacy code)
  • turning asserts into breakpoints
  • non-fatal asserts
  • "out of the box" googlemock integration
  • automatic tests detection, no need to enumerate them
  • tests can be disabled and enabled
  • tests to run can be selected using name patterns
  • value/type-parameterized tests
  • user-defined predicate asserts
  • death tests
  • much richer set of asserts
  • type asserts
  • asserting on subroutines
  • additional debug info can be added to asserts using <<
  • RecordProperty emits last value of property to the xml output
  • SCOPED_TRACE helps understand the context of an assertion failure coming from inside a sub-routine or loop.
  • xUnit xml output, can be shown by Jenkins right away without a XSLT transformation in between
  • supports custom types printers
  • time consumed by test indication(I suspect this is also possible with CppUnit but I haven figured it out yet)
  • test event listener API (user-defined plug-ins)
  • test shuffling
  • no exceptions and RTTI

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

最後は重要なことです:GoogleTest に欠けている素晴らしいCppUnitの機能はありますか

ありがとう!

58
グラフィックテストランナーは利点ですか?自動化はテストのフィードバックをより簡単に、より頻繁に取得できるため、通常は簡単に自動化できるものが必要です。
追加された 著者 Ben Voigt,
C ++単体テストフレームワークの比較の回答の中には、特にGoogleTestの機能に対処するものがあります。
追加された 著者 Greg Hewgill,
数年前、私は同様の調査をしていましたが、GoogleTestはその頃はありませんでした。私はCXXTestにPerlで事前解析するステップでテストケースを列挙する仕組みを用意しました。それはCppTestよりはるかに優れていました。つまり、私はGoogleTestについて何も知りません。
追加された 著者 Wolfram Arnold,

3 答え

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

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

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

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

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

7
追加された

xUnit ++ を見ていない場合は、私が利用可能なものに不満を持っていたために具体的に作成しました。 gtest)。あなたのリストのほとんどはサポートされています。もしそうでなければ、それは "必須"の機能です、私はおそらくそれを追加してもらいたいです。

3
追加された
私は正直なところ、どのライセンスが使用されているのか覚えていませんが、私はそれがMITライセンスだと思っています。
追加された 著者 moswald,
オープンソースライセンスの下でリリースできますか? Apache 2.0やMITライセンスと同様?
追加された 著者 Sachin Joseph,
ありがとう、テキストは同じですが、License.txtはMITライセンスだとは言いません。それを追加してもいいですか(もちろん、時間があるとき)、それが大丈夫ならば?この opensource.org/licenses/MIT のように?より多くの人々がこの素晴らしいフレームワークを使用して試すことができると思います:-)
追加された 著者 Sachin Joseph,
ウィキペディアのページ en.wikipedia.org/wiki/List_of_unit_testing_frameworks では、xUnit ++がMITライセンスの下でリリースされました。おそらく、あなたのbitbucketリポジトリのどこにも指定されていないからです(私は思っています):-)
追加された 著者 Sachin Joseph,

それが私の利益です。いくつかのGUIテストランナーがいます:

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

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

3
追加された