我只是一个在沙滩上捡贝壳的小男孩,梦想有一天可以发现知识的真理~~~

Boost.Test 夹具的使用

夹具,特别像:一个汉堡包,上面一层,下面一层!

中间夹着相应的测试

级别:

  • 全局夹具
  • 测试套件夹具
  • 测试用例夹具
可以说,是:十分的合理了
 
用例级别的夹具:
  1. #ifndef BOOSTLEARN_TEST3_H
  2. #define BOOSTLEARN_TEST3_H
  3. #include"boost/test/unit_test.hpp"
  4. #include<iostream>
  5. #include<string>
  6. struct fixture_case1{
  7. fixture_case1(){
  8. i=0;
  9. name="";
  10. std::cout<<"夹具开始"<<std::endl;
  11. };
  12. int i;
  13. std::string name;
  14. ~fixture_case1(){
  15. std::cout<<"夹具结束"<<std::endl;
  16. }
  17. };
  18. BOOST_AUTO_TEST_SUITE( s_suit3 )
  19. BOOST_FIXTURE_TEST_CASE( t_case1,fixture_case1 )
  20. {
  21. BOOST_CHECK_EQUAL(1,3);
  22. }
  23. BOOST_AUTO_TEST_CASE( t_case2 )
  24. {
  25. BOOST_CHECK_EQUAL(1,1);
  26. }
  27. BOOST_AUTO_TEST_SUITE_END()
  28. #endif//BOOSTLEARN_TEST3_H
 
 

测试套件夹具

  1. #ifndef BOOSTLEARN_TEST3_H
  2. #define BOOSTLEARN_TEST3_H
  3. #include"boost/test/unit_test.hpp"
  4. #include<iostream>
  5. #include<string>
  6. struct fixture_case1{
  7. fixture_case1(){
  8. i=0;
  9. name="case1";
  10. std::cout<<"case1夹具开始"<<std::endl;
  11. };
  12. int i;
  13. std::string name;
  14. ~fixture_case1(){
  15. std::cout<<"case1夹具结束"<<std::endl;
  16. }
  17. };
  18. struct fixture_suit1{
  19. fixture_suit1(){
  20. i=0;
  21. name="suit1";
  22. std::cout<<"suit1夹具开始"<<std::endl;
  23. };
  24. int i;
  25. std::string name;
  26. ~fixture_suit1(){
  27. std::cout<<"suit1夹具结束"<<std::endl;
  28. }
  29. };
  30. BOOST_FIXTURE_TEST_SUITE( s_suit3,fixture_suit1 )
  31. BOOST_FIXTURE_TEST_CASE( t_case1,fixture_case1 )
  32. {
  33. BOOST_CHECK_EQUAL(1,3);
  34. name="徐锦涛";
  35. BOOST_CHECK_MESSAGE(1==2,"错误:"+name);
  36. }
  37. BOOST_AUTO_TEST_CASE( t_case2 )
  38. {
  39. BOOST_CHECK_EQUAL(1,1);
  40. BOOST_CHECK_MESSAGE(1==2,"错误:"+name);
  41. }
  42. BOOST_AUTO_TEST_SUITE_END()
  43. #endif//BOOSTLEARN_TEST3_H
输出结果:
  1. Running 7 test cases...
  2. case1夹具开始
  3. /Users/guabutian/Documents/codeWorld/CandC++/C/BoostLearn/src/test/test3.h:41: error: in "s_suit3/t_case1": check 1 == 3 has failed [1 != 3]
  4. /Users/guabutian/Documents/codeWorld/CandC++/C/BoostLearn/src/test/test3.h:43: error: in "s_suit3/t_case1": 错误:徐锦涛
  5. case1夹具结束
  6. suit1夹具开始
  7. /Users/guabutian/Documents/codeWorld/CandC++/C/BoostLearn/src/test/test3.h:49: error: in "s_suit3/t_case2": 错误:suit1
  8. suit1夹具结束
  9. *** 3 failures are detected in the test module "TestUnit"
可以看到:
除了全局夹具之外,其他的夹具都是作用到case上的,而且,case里的夹具会掩盖suit的夹具
全局夹具,则是给整个测试模块加的夹具
  1. //
  2. // Created by 瓜不甜 on 2018/1/17.
  3. //
  4. #ifndef BOOSTLEARN_TEST3_H
  5. #define BOOSTLEARN_TEST3_H
  6. #include"boost/test/unit_test.hpp"
  7. #include<iostream>
  8. #include<string>
  9. struct fixture_case1{
  10. fixture_case1(){
  11. i=0;
  12. name="case1";
  13. std::cout<<"case1夹具开始"<<std::endl;
  14. };
  15. int i;
  16. std::string name;
  17. ~fixture_case1(){
  18. std::cout<<"case1夹具结束"<<std::endl;
  19. }
  20. };
  21. struct fixture_suit1{
  22. fixture_suit1(){
  23. i=0;
  24. name="suit1";
  25. std::cout<<"suit1夹具开始"<<std::endl;
  26. };
  27. int i;
  28. std::string name;
  29. ~fixture_suit1(){
  30. std::cout<<"suit1夹具结束"<<std::endl;
  31. }
  32. };
  33. struct fixture{
  34. fixture(){
  35. i=0;
  36. gname="suit1";
  37. std::cout<<"全局夹具开始"<<std::endl;
  38. };
  39. int i;
  40. std::string gname;
  41. ~fixture(){
  42. std::cout<<"全局夹具结束"<<std::endl;
  43. }
  44. };
  45. // 定义全局夹具
  46. BOOST_GLOBAL_FIXTURE(fixture);
  47. BOOST_FIXTURE_TEST_SUITE( s_suit3,fixture_suit1 )
  48. BOOST_FIXTURE_TEST_CASE( t_case1,fixture_case1 )
  49. {
  50. BOOST_CHECK_EQUAL(1,3);
  51. name="徐锦涛";
  52. BOOST_CHECK_MESSAGE(1==2,"错误:"+name);
  53. }
  54. BOOST_AUTO_TEST_CASE( t_case2 )
  55. {
  56. BOOST_CHECK_EQUAL(1,1);
  57. BOOST_CHECK_MESSAGE(1==2,"错误:"+name);
  58. }
  59. BOOST_AUTO_TEST_CASE( t_case3 )
  60. {
  61. BOOST_CHECK_EQUAL(1,1);
  62. }
  63. BOOST_AUTO_TEST_SUITE_END()
  64. #endif//BOOSTLEARN_TEST3_H
但,在我这里发现了个问题:全局夹具的成员变量貌似没有办法在case里使用,我觉得,有空要研究下源码,这样的话,才可以,完全掌握这个东西
posted @ 2018-01-21 19:51  瓜不甜  阅读(415)  评论(0编辑  收藏  举报

全栈开发工程师 - 一只菜鸟的成长之路

这是一位软件开发工程师的个人站,内容主要是网站开发方面的技术文章,大部分来自学习或工作,部分来源于网络,希望对大家有所帮助。

联系我:2351180282@qq.com