Boost Test Library を使う

CppUnit 入れるのめどいので Boost で我慢。細かいところが tutrial に書いてないので自分用メモ。

とにかくメンドクサイので自動でテストしてくれるのがいいなぁと思ったら、BOOST_AUTO_TEST_CASE というのがいいらしい。関数定義のようにソースに書いておくと、自動で main から呼ばれて自動でテストしてくれる。テストケース書いたけど呼ぶの忘れたよという悲しい事件を未然に防ぐ。この辺は class を定義して、インスタンスを作って、そのコンストラクタ内でテストを実行とかしているんだろうと勝手に予想。#define BOOST_AUTO_TEST_MAIN すると、main 相当のモノが生成されるため、main を書かなくてもいいよということのようなんだが、1.34 でコンパイルすると main がないと怒られる。あれぇ? そもそも release note に 1.34 がないので、このドキュメントが 1.33 用な気がする・・・。メインの実験環境が偶然 1.33 だったのでこれでいいや。

#include 

BOOST_AUTO_TEST_CASE(test1)
{
    BOOST_CHECK(true);
}

コンパイルするときは libboost_unit_test_framework とリンクしないといけない。ライブラリの名前が環境によって微妙にまちまち。何なんだろう。あと、cygwin の boost になぜかはいってないんですがどないなっとりますか。

$ g++ test_sample.cc -lboost_unit_test_framework-gcc

ぐぐってたら、微妙に別の名前のマクロを使っているサンプルを見かけたんだが、

BOOST_AUTO_UNIT_TEST renamed to BOOST_AUTO_TEST_CASE. Old name still provided but deprecated

らしい。なんか、こういうどうでもいいような変更はしないでほしいなぁ。

なんか、tutorial があまり tutorial になってなくて、がっかりだ。というか、コンパイル方法かいといてよ・・・。