BOOST TEST -旧式 minimal ヘッダファイルを使って単体ファイルで利用2020年04月24日 11時56分34秒

Boost Test が出されてから結構経つ。Google Test に押されてはいるが、使い様によっては便利。

まずは、minimal ヘッダを使って、最も簡単にテスト。実はこれは旧式なやり方で、新しいバージョンではやり方が若干違う。新しい方式への変換を勧めてはいるが、この形が一番簡単で、実験で初めて試すのには都合が良いのであえて、ここで紹介する。

コードで示した方が分かりやすいので、実例から。

#include <boost/test/minimal.hpp>

int test_main( int, char** )
{
    int one = 1;
    int two = 3;

    BOOST_CHECK( one == 1 );
    BOOST_CHECK( two == 2 );

    BOOST_REQUIRE( one == 1 );
    BOOST_REQUIRE( two == 2 );

    BOOST_REQUIRE( two != one );

    return 0;
}
まず最初に、boost/test/minimal.hpp を読む。このファイルは幾つかの特徴がある。
  1. ヘッダファイルが main 関数を定義する。そのため、main 関数は自分では実行しないが、代わりに test_main を定義する。
  2. ヘッダファイルが全部インラインで実装するので、ライブラリなどは別途リンクする必要が無い。
  3. minimal は古いので、もっと使い勝手のいいマクロが使えない。
  4. boost のヘッダファイルがある場所を -I でコンパイラに指定しなければいけない環境もある。

コンパイルの例と、実行結果。

% c++ -I /usr/local/include/ boost_minimal.cpp
% ./a.out
boost_minimal.cpp(11): test two == 2 failed in function: 'int test_main(int, char **)'
boost_minimal.cpp(14): test two == 2 failed in function: 'int test_main(int, char **)'

**** 2 errors detected
  1. BOOST_CHECK は式が期待した通りかを確かめて、異なる場合はエラーを出力し、テストを続ける。
  2. BOOST_REQUIRE は式が期待した通りかを確かめて、異なる場合はエラーを出力し、テストを終了する。
  3. 次は、新しいヘッダファイルを使った単体ユニットを紹介したい。

    次回