boost test 编译问题

来源:互联网 发布:双色球6保6旋转矩阵 编辑:程序博客网 时间:2024/06/08 08:12

1. boost test UTF, 如果在UI下,如对话框工程下进行单元测试, link 选项 需要添加

/SUBSYSTEM:CONSOLE

才能进行测试。

struct global_fixture1{    global_fixture1()  { cout << ("global setup\n") << endl; }    ~global_fixture1() { cout << ("global teardown\n") << endl; }};struct suit_fixture{    suit_fixture()  { cout << ("----suit setup\n") << endl; }    ~suit_fixture() { cout << ("----suit teardown\n") << endl; }};struct case_fixture{    case_fixture()  { cout << ("--------case setup\n") << endl; }    ~case_fixture() { cout << ("--------case teardown\n") << endl; }};BOOST_GLOBAL_FIXTURE(global_fixture1);// BOOST_AUTO_TEST_SUITE(s_t)// BOOST_AUTO_TEST_CASE(s_t)BOOST_FIXTURE_TEST_SUITE(s_t, suit_fixture)    BOOST_FIXTURE_TEST_CASE(s_c, case_fixture){    CC c;    c.m_name = "lxg";    ::MessageBox(NULL, "ok", c.m_name.c_str(), MB_OK);    std::cout << c.m_name << std::endl;    BOOST_CHECK_EQUAL(c.m_name, "lxg");}BOOST_AUTO_TEST_SUITE_END()BOOST_FIXTURE_TEST_SUITE(s_t1, suit_fixture)    BOOST_AUTO_TEST_CASE(s_c1){    std::cout << "s_c1 test" << std::endl;    BOOST_CHECK_EQUAL(1, 1);}BOOST_AUTO_TEST_SUITE_END()
2. 例子,对于console程序,用BOOST_TEST_NO_MAIN 决定用系统的 main, 如果定义 BOOST_TEST_MAIN 或者 BOOST_TEST_MODULE xxx, 则运行测试程序。

// #define BOOST_TEST_NO_MAIN  // 使用自带的 main 函数// #define BOOST_TEST_MAIN #define BOOST_TEST_MODULE testme#include <boost/test/included/unit_test.hpp>using namespace boost;struct global_fixture1{    global_fixture1()  { cout << ("global setup\n") << endl; }    ~global_fixture1() { cout << ("global teardown\n") << endl; }};struct suit_fixture{    suit_fixture()  { cout << ("----suit setup\n") << endl; }    ~suit_fixture() { cout << ("----suit teardown\n") << endl; }};struct case_fixture{    case_fixture()  { cout << ("--------case setup\n") << endl; }    ~case_fixture() { cout << ("--------case teardown\n") << endl; }};BOOST_GLOBAL_FIXTURE(global_fixture1);// BOOST_AUTO_TEST_SUITE(s_t)// BOOST_AUTO_TEST_CASE(s_t)BOOST_FIXTURE_TEST_SUITE(s_t, suit_fixture)    BOOST_FIXTURE_TEST_CASE(s_c, case_fixture)// 如果都有夹具,只能使用case的夹具{    CC c;    c.m_name = "lxg";    std::cout << c.m_name << std::endl;    BOOST_CHECK_EQUAL(c.m_name, "lxg");}BOOST_AUTO_TEST_SUITE_END()BOOST_FIXTURE_TEST_SUITE(s_t1, suit_fixture)    BOOST_AUTO_TEST_CASE(s_c1){    std::cout << "s_c1 test" << std::endl;    BOOST_CHECK_EQUAL(1, 1);    CdtDlg dlg;    dlg.DoModal();}BOOST_AUTO_TEST_SUITE_END()