2012年2月12日日曜日

Boost.Test Step 5

後はファイルをテストスイート毎に分割できると良いかな,ってことで分割してみた.

とりあえず,メイン.たぶんこのファイル中のテストスイートも外に出せる.
// main.cpp
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MAIN
#include <boost/test/unit_test.hpp>
#include <boost/test/unit_test_suite.hpp>

bool isOdd(int n)
{
    return n % 2 != 0;
}

BOOST_AUTO_TEST_SUITE(OddTest)
BOOST_AUTO_TEST_CASE(oddTest)
{
    BOOST_CHECK_EQUAL(isOdd(0), false);
}
BOOST_AUTO_TEST_SUITE_END()

偶数判定用のテストスイートはa.cppというファイルに.
// a.cpp
#include <boost/test/unit_test.hpp>
#include <boost/test/unit_test_suite.hpp>

bool isEven(int n)
{
    return n % 2 == 0;
}


BOOST_AUTO_TEST_SUITE(EvenTest)
BOOST_AUTO_TEST_CASE(evenTest)
{
    BOOST_CHECK_EQUAL(isEven(0), false);
}
BOOST_AUTO_TEST_SUITE_END()

これをつないでビルドすれば実行できる.
$ g++ -o main main.cpp a.cpp -lboost_unit_test_framework
$ ./main --report_level=detailed
a.cpp:13: error: in "evenTest": check isEven(0) == false failed [true != false]

Test suite "Master Test Suite" failed with:
  1 assertion out of 2 passed
  1 assertion out of 2 failed
  1 test case out of 2 passed
  1 test case out of 2 failed

  Test suite "OddTest" passed with:
    1 assertion out of 1 passed
    1 test case out of 1 passed

    Test case "oddTest" passed with:
      1 assertion out of 1 passed

  Test suite "EvenTest" failed with:
    1 assertion out of 1 failed
    1 test case out of 1 failed

    Test case "evenTest" failed with:
      1 assertion out of 1 failed

基本的な使い方はこれで一通り把握できたかなぁ.しかし相変わらずドキュメントが読みにくかった.

0 件のコメント:

コメントを投稿