对于TestCase/TestSuite等,Boost.Test既支持手动注册方式,也支持自动注册方式,当前Boost官方推荐自动注册方式,手动注册为了保持向前兼容保留,以后版本可能被移除。使用宏BOOST_AUTO_TEST_CASE即可自动注册测试用例。使用如下:
#include <boost/test/unit_test.hpp> BOOST_AUTO_TEST_CASE(test_case_name) { BOOST_CHECK(true); } |
3.4 TestSuite
使用宏BOOST_AUTO_TEST_SUITE(test_suite_name)开始测试套件,使用BOOST_AUTO_TEST_SUITE_END()结束测试套件。使用举例:
#include <boost/test/unit_test.hpp> BOOST_AUTO_TEST_SUITE(test_suite_name) BOOST_AUTO_TEST_CASE(test_case1) { BOOST_CHECK(true); } BOOST_AUTO_TEST_CASE(test_case1) { BOOST_CHECK(true); } BOOST_AUTO_TEST_SUITE_END() |
3.5 MainTestSuite
使用宏BOOST_TEST_MODULE表明主测试套件,一个测试项目中只能存在一个主测试套件。使用举例:
#define BOOST_TEST_MODULE maintest #include <boost/test/unit_test.hpp> |
3.6 TestFixture
测试夹具做测试前的准备工作和测试后的清理工作。而C++的RAII机制(构造函数申请资源,析构函数释放资源)恰好能满足该需求。因此Boost中直接使用普通类做夹具。实现夹具举例:该夹具在测试前将整数i初始化为5
struct MyFixture { MyFixture():i(5){} ~MyFixture(){} Int I; }; |
夹具可以和TestCase一起使用,也可以和TestSuite一起使用,也可以和MainTestSuite一起使用。
使用宏BOOST_FIXTURE_TEST_CASE(test_case_name, fixure_name)代替BOOST_AUTO_TEST_CASE(test_case_name)即可在TestCase中使用夹具,举例如下:
BOOST_FIXTURE_TEST_CASE(test_case_name,MyFixture) { BOOST_CHECK(i==5); } |