読者です 読者をやめる 読者になる 読者になる

opamp_sando's blog

クソザコが割りと適当なことを書くためにある備忘録です。あとたまに普通の日記も書きます

Boost Test Libraryの BOOST_TEST_MESSAGE について

BOOST_TEST_MESSAGEを使うとログを出力することができる。今日はこれのメモ。

// QFmpegのdomParserのテストコードの一部。 (多少改変してある)
#include "../domParser.hpp" // test 対象のクラスのヘッダーを読み込む。外部でCMakeを使ってちゃんとリンクさせてある。
#define BOOST_TEST_MODULE FFmpegCmdDataTest
#include <boost/test/unit_test.hpp>

using namespace qfmpeg_data;

BOOST_AUTO_TEST_CASE( file_open_error )//auto test case. ちなみにautoじゃなかったら手動実行になる?
{
    QString str = "aaa";
    domParser p;
    try{
        p.openXML(str); // file open error.
        /*
        ここではあえてQFileクラスがfileopenを失敗するようにしてある。
        openに失敗した場合 openXMLは例外クラス domParser_e& を投げる。
        それを以下のcatchで受け取る。
        */
    }
    catch(domParser_e& e){
        /*
        domParser_e&は内部にmessageをQStringで持っており、これを以下のようにBOOST_TEST_MESSAGEを使って出力する。
        以下のようにしてやるといい。
        */
        BOOST_TEST_MESSAGE(e.getMessage().toStdString());//QStringだと読んでくれないのでstd::stringに変換。
        BOOST_CHECK(e.getNumber() == 1);
    }

これでビルドし実行するが

$ ./DomParseTest

としても何もでないので

$ ./DomParseTest --log_level=message

とする必要がある。


すると

Running 2 test cases...
FileOpenError:: file name is aaa

のようになる。2行目のメッセージがqfmpeg_data::domParser_e&が持ってたmessageになる。
aaaファイルを開こうとして失敗したという内容のmessageが出力された。


詳しくは
http://www.boost.org/doc/libs/1_48_0/libs/test/doc/html/utf/user-guide/test-output/BOOST_TEST_MESSAGE.html
も参照。

Firefox ブラウザ無料ダウンロード