BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 発表:新Google C++ テストフレームワーク

発表:新Google C++ テストフレームワーク

ブックマーク
近ごろGoogleは、C++開発向けxUnit(リンク)ベースのテストフレームワークをオープンソース化した。プロジェクトデベロッパのZhanyong Wan氏よると、そのフレームワークは何年もの間数千人のC++デベロッパによりGoogle内部で使用されてきたと言われている。

Googleによると、このリリースで最も注目すべき点は以下のとおりである。
  • Google Testはポータブルである。GCCおよびMSVCコンパイラの複数バージョンの多様なプラットフォーム上 (Linux、Windows、Mac OS Xなど)で、例外の有無を問わず動作する。Windows CEやSymbianのような組み込みシステムにおいても使用することができる。これら向けのビルドツールやテストランナーは多くが開発中で、Linux Autotools(リンク)サポートは環境が整っている。
  • 致命的および非致命的(リンク)アサーションの両方をサポートする。非致命的な障害の後、テストは続行される。これにより、ますます多くの問題が露呈され、一度のedit-compile-test周期で修正が可能になる。
  • 共通のテストニーズへ多くのアサーション(リンク)を提供し、それほど一般的でないケースの新しいアサーションを容易に定義する(リンク)ことができる。
  • Linux上で、デステスト(リンク)を書き込み、コードが予想されるエラーでクラッシュすることを確認する。
  • ポピュラーなxUnitアーキテクチャを基礎としているので、以前このファミリーでテストフレームワークを使用したことがあれば、Google Testは学びやすい。

C++ コミュニティは、良いユニットテスト向けのツールセットがJavaやC#のようなその他の現代言語向けに提供されたツールセットには敵わないという契約を 交わしている一方、今になっても確実に多くの人が「なぜ別のツールセットなのか?何が特別なのか?」と尋ねる。wikiにあるよくある質問とその回答をま とめたQ&A集(リンク)には、Googlerはこの質問に対処しようと努めている。その他多くの質問にも対応している。彼らのツールセット自体が、既存の ツールセットより「優れている」ことを謳っているわけではなく、むしろGoogle内での要求に便利だと判明したさまざまな機能性を組み合わせたものを提 供しているだけであると警告している。以下はサイトからの引用である。

この一覧が[Google Testが便利]かどうかを判断する際に役立つものとなることを望む。
  • Google Testは携帯できるように設計されている。多くのSTLタイプ(たとえば、std::stringおよびstd::vector)がコンパイルしない場 合に、動作する。例外やRTTIを必要としない。その結果、Linux、Mac OS X、Windowsおよび複数の組み込みオペレーティングシステム上で実行する。
  • 1度のedit-compile-test周期でテストが複数の障害を報告できるようにしているので、非致命的なアサーション(EXPECT_*)が時間の節約に大いに貢献することが証明された。
  • I情報メッセージを生成するアサーションの書き込みが簡単である。ストリーム構文を使用し、追加情報を付け加えるだけである。例:ASSERT_EQ(5, Foo(i)) << " where i = " << i;. 新しいマクロや特別な機能のセットは必要としない。
  • Google Testは自動的にテストを検出し、それらを実行するために列挙することを必要としない。
  • どのフレームワークもすべてのニーズを予想することはできないので、Google TestはEXPECT_PRED*を提供し、簡単にアサーションボキャブラリーを拡張することができるようにしている。よりすばらしい構文の場合、 EXPECT_PRED*の観点から、独自のアサーションマクロを自明に定義することができる。
  • 適切な状況で生産コードのアサートがトリガーされることを確実にする場合、デステストはかなり便利である。
  • SCOPED_TRACEは、サブルーチンやループ内から発生するアサーション障害の内容を理解するのに役立つ。
  • 名前パターンを使用して、どちらのテストを実行するかを決定することができる。迅速にテスト障害を複製する場合、時間の節約につながる。
Saptarshi "Sunny" Purkayastha氏が、新しいフレームワークの確認に時間を費やし、ブログ上に初期段階の考えを掲載した。前向きな反応だった(リンク)
フレームワークに関して他にすばらしいことは、基礎を学ぶのが簡単であるのと、拡張機能を備えていることである。それはxUnitテストと非常に似ており、CppUnitと 比較するための良い機能がある。基礎はここで学ぶことができ、上級ガイドはそこにある。おそらく述語表明は、お気に入りの機能の1つであり、デバッグする のに問題を抱えたプログラム中ですぐに出くわす機能である。また他にも利用できるアサーションが多数あり、すべてのアサーションについて詳細まで検討する ことは控える。しかしフレームワークの当初の観察から、われわれのほとんどが、それを最高のテストフレームワークの1つとしてランク付けした...

wikiによるとPrimer(リンク)を確認して、より集中的に使うためAdvanced Guide(リンク)をリファレンスすることでGoogle Testを実行することができる。

ここで(リンク)フレームワークをダウンロードして試し、感想をコミュ二ティに知らせて欲しい。

原文はこちらです:http://www.infoq.com/news/2008/07/google-test

この記事に星をつける

おすすめ度
スタイル

BT