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()