[c/c++] google testをカレントディレクトリ配下のみで利用する[c/c++] how to use google test under current directory

今月末に日本に帰国で、船便の準備に追われています。松浦です。
フランスの配送では何度も痛い目を見ました。フランスから見れば、日本の運送会社はどれを取っても、驚きのクオリティです。日本での配送トラブルなんかが 時々ネタにされますが、いつも微笑ましく見ています。今朝も現地の運送会社経由でワインが家に届いたのですが、1本割れていました(泣)。ちなみに、パリ のクロネコヤマトは段ボールに凱旋門やエッフェル塔が描かれていてちょいとかわいいです。

今日はgoogle testの利用方法を紹介します。お手軽にc/c++のテストフレームワークを使おうという主旨のものです。google testはc++用ですが、ここではあえてC言語用に書いています。最後におまけとしてコンパイルおよびテスト結果の表示を行ってくれるvim scriptを紹介します。

想定および環境

普段はc/c++を使ってないが、ちょっとテスト環境を使いたいという利用シーンを想定しています。ここでは開発しているディレクトリ配下で完結す る方法を示します。小さなライブラリを作ったり、書籍を読みながら学習する様な場合に向いているかと思います。今回試した環境は下記の通りです。

OS: OSX 10.8.2
compiler: GCC 4.2.1
google test: 1.6.0

ダウンロード&事前準備

http://code.google.com/p/googletest/downloads/list ここからgoogle testをダウンロードします。fused-src/gtestにgoogle testのコードを全て詰め込んだgtest-all.ccが存在します。 基本的にこのコードとヘッダーがあれば、google testを利用できます。 特定の作業ディレクトリに上記のgtestフォルダをコピーし、下記の様にオブジェクトファイルを作っておきます。google testのコンパイルはこの一度だけです。

利用手順

ここでは二つのファイル(sample.c, sampleTest.c)を用意します。sampleTest.cがテストコードに当たります。ここでは符号無し整数(32bit)を与えたときに、そ の中に1のビットがどれだけ含まれているか数え上げるpop関数を用いました。例えば3は2進数で11なので、1のビットは2つ存在し、pop(3)は2 を返します(はずです)。

上記のようにコマンドを実行することで、テスト結果が得られます。実際に用いたコードは下記の通りです。テストケースを追加したり、関数を書き換えてわざと失敗させたりと試してみて下さい。

コンパイルとテスト結果を表示するvim script

“,t”と入力することで、コンパイルを実行しテスト結果を表示してくれるvim scriptをおまけとして載せておきます。sample.c, sampleTest.cどちらを編集している時でも動作します。ただし、filename.c, filenameTest.cのように対象となるCコードのファイル名に続けて”Test”とテストコードの名前付けを行う必要があります。

下記のvim scriptを例えば~/.vim/after/ftplugin/c.vimとして保存しておくと良いでしょう。vimはバージョン7.3を利用し、動作確認を行いました。

参考文献

・Google Testをインストール、しないですませる方法
http://d.hatena.ne.jp/E_Mattsan/20120215/1329311774
・Google Test ドキュメント日本語訳
http://opencv.jp/googletestdocs/primer.html
・Unit Testing C code with the GoogleTest framework
http://meekrosoft.wordpress.com/2009/11/09/unit-testing-c-code-with-the-googletest-framework/
・ハッカーのたのしみ, ヘンリー・S. ウォーレン ジュニア, 5章ビットの数え上げ
http://www.amazon.co.jp/dp/4434046683

by MATSUURA Satoshi