BOOST TEST - minimal ヘッダファイルを使わない新しい単体ファイル形式で利用2020年05月11日 11時29分51秒

BOOST TEST -旧式 minimal ヘッダファイルを使って単体ファイルで利用ではあえて比較のために、Boost Test の古いやり方に付いて紹介した。今度は新しい形式。

ファイルは boost_included_unit_test.cpp と名付けている。

// c++ -I /usr/local/include/ boost_included_unit_test.cpp

#include <memory>
#define BOOST_TEST_MODULE VerifyStd
// #include <boost/test/unit_test.hpp>
#include <boost/test/included/unit_test.hpp>

BOOST_AUTO_TEST_CASE( test_shard_ptr )
{
    int one = 1;
    int two = 3;

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

    BOOST_CHECK_EQUAL( one, 1 );
    BOOST_CHECK_EQUAL( two, 2 );

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

    // return 0;
}
まずは、少し気を付ける事項から。
  1. boost/test/unit_test.hpp ではなく boost/test/included/unit_test.hpp を使う。
  2. BOOST_TEST_MODULE を定義する。
  3. BOOST_AUTO_TEST_CASE には戻り値は無い。
  4. main 関数はライブラリが定義し、単一ファイル形式なので -l オプションが必要無い。

これをコンパイルする。

% c++ -I /usr/local/include/ boost_included_unit_test.cpp
-I はどこに boost ライブラリがインストールされているかに依存する。Linux 系だったら /usr/include 以下で特に必要無いだろう。BSD 系だと /usr/local/include が必要になる。
% c++ -I /usr/local/include/ boost_included_unit_test.cpp
% ./a.out 
Running 1 test case...
boost_included_unit_test.cpp(14): error: in "test_shard_ptr": check two == 2 has failed
boost_included_unit_test.cpp(17): error: in "test_shard_ptr": check two == 2 has failed [3 != 2]
boost_included_unit_test.cpp(20): fatal error: in "test_shard_ptr": critical check two == 2 has failed

*** 3 failures are detected in the test module "VerifyStd"
これを実行すると、この様な出力になる。

前回次回