您的位置:首页 > 编程语言 > C语言/C++

总结下C++下的单元测试

2010-07-24 12:22 134 查看
现在越来越发现单元测试在实际做项目时多么的重要,否则bug不断,不仅浪费自己的时间,更重要的是给其他人也带来了极大地不方便。

感觉boost提供的单元测试还是不错的,也相对比较简单。

如果要写多个测试用例,可以如下:

file1.cpp
#include <boost/test/unit_test.cpp>
....

BOOST_AUTO_TEST_SUITE(file1_test_suite)

BOOST_AUTO_TEST_CASE(freader_test) {
....
}

BOOST_AUTO_TEST_CASE(freader_test) {
....
}

BOOST_AUTO_TEST_SUITE_END()
- end of file 1 -

file2.cpp
#include <boost/test/unit_test.cpp>

....

BOOST_AUTO_TEST_SUITE(file2_test_suite)

BOOST_AUTO_TEST_CASE(test1) {
....
}

BOOST_AUTO_TEST_CASE(test2) {
....
}

BOOST_AUTO_TEST_SUITE_END()

- end of file 2 -

test_main.cpp
#define BOOST_TEST_MODULE master_test_suite
#include <boost/test/included/unit_test.hpp>

- end of test_main.cpp -


注意main函数的include与test_suit的include文件不同。

此外如果不使用boost lib,必须添加预定义宏BOOST_TEST_NO_LIB 或者 BOOST_ALL_NO_LIB,否则会出现找不到lib的错误。

或者

#include <boost/test/included/unit_test.hpp>
using namespace boost::unit_test;

void free_test_function() {

...
}

test_suite*
init_unit_test_suite( int argc, char* argv[] )
{

framework::master_test_suite().add( BOOST_TEST_CASE(&free_test_function));

return 0;
}


这样测试内存泄露什么的,还是比较方便的。

不过如果出现了内存泄露,虽然可以通过一些手段跟踪内存泄露的语句行号,但是极其不方便。我现在也用purifyplus,可以很方便的定位到语句,不过程序跑起来那就相当的慢了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: