segmentation fault orz

日頃の技術的興味をつらつらと…

C++のユニットテスト

JavaだとJUnitなどが知られているが、C/C++では何があるんだろうか。

 

観点はいくつかあるみたいだが、どうやらCUnit/CppUnitはTDD(Test Driven Development)を行うにはテスト速度が遅い点でよくないらしい。

開発者が失敗作と言っており、別プロジェクトCppUnitLiteが作成されている。

 

他にもCutterやGoogle Test、Boostフレームワークを用いるものなど多数あるようだ。

 

Cutterは日本語ドキュメントが充実している。Windows,Linux,Mac OSにも対応している。

Google TestはMockオブジェクト(スタブのようなもの?)を導入可能など、機能面が充実しているようだ。

Boostはテストとは関係ないが、数学ライブラリや統計に必要なランダム関数(メルセンヌ・ツイスター)などが充実しているらしい。個人的に使ってみたい。

 

基本的な使い方としては、まずconfigureからmakeして、ヘッダファイルなどでテストのライブラリをインクルードする。ソースファイルのコンパイル時に-Lオプションでリンカを貼る。ソースファイル用のmakefileを一度作ってしまえば後はAssert、文字列比較を始めとするテストをがしがし書いていけばいいようだ。

 

まずはCutterあたりを使ってみるか…。

 

 参考:

http://ja.wikipedia.org/wiki/%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88%E3%83%86%E3%82%B9%E3%83%88%E3%83%BB%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%E4%B8%80%E8%A6%A7#C.2B.2B

http://k4zmblog.dtiblog.com/blog-entry-338.html

http://cutter.sourceforge.net/index.html.ja

http://opencv.jp/googletestdocs/primer.html

http://www.boost.org/

http://d.hatena.ne.jp/tt_clown/20120214/cpp_test_framework