如何在VS2013中进行Boost单元测试

发表于:2014-10-20 11:48

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:峰子_仰望阳光    来源:51Testing软件测试网原创

  如果我们将“BoostUnitTest.cpp”中的第13行改成:
  BOOST_CHECK(tmpTested->add(2, 2) == 3);
  单元测试运行结果是不通过,如下图:
  至此,如何进行一个简单的Boost单元测试的过程就完成了。
  // 添加于2014.10.18 ---------------------------------------------------------------------------
  现在,我在之前程序的基础上又添加了一点异常测试,相关的源代码如下:
1 #include <iostream>
2
3 using namespace std;
4
5 class Tested
6 {
7 public:
8
9     Tested();
10     virtual ~Tested();
11     int add(const int a, const int b);
12     void testException();
13
14 private:
15
16 };
1 #include "tested.h"
2
3 Tested::Tested()
4 {
5
6 }
7
8 Tested::~Tested()
9 {
10
11 }
12
13 int Tested::add(const int a, const int b)
14 {
15     return a + b;
16 }
17
18 void Tested::testException()
19 {
20     throw logic_error("my throw");    // 抛出一个逻辑错误异常
21 }
1 #define BOOST_TEST_MODULE Tested_Module                                // 主测试套件,一个测试项目中只能有一个主测试套件
2
3 #include "stdafx.h"
4 #include "D:\VSProject\BoostUnitTest\BoostUnitTest\Tested\tested.h"    // 待测工程头文件
5
6 struct Tested_Fixture                                                // 测试夹具
7 {
8     Tested_Fixture()
9     {
10         BOOST_TEST_MESSAGE("setup fixture");
11         tmpTested = new Tested();
12     }
13     ~Tested_Fixture()
14     {
15         BOOST_TEST_MESSAGE("teardown fixture");
16         delete tmpTested;
17     }
18     Tested * tmpTested;
19 };
20
21 BOOST_FIXTURE_TEST_SUITE(Tested_test, Tested_Fixture)                // 测试套件
22
23 BOOST_AUTO_TEST_CASE(Tested_Method_add_Test)                        // 测试用例
24 {
25      // TODO: Your test code here
26     BOOST_WARN(tmpTested->add(2, 2) == 4);                            // WARN型预言检测
27     BOOST_CHECK(tmpTested->add(2, 2) == 4);                            // CHECK型预言检测
28     BOOST_REQUIRE(tmpTested->add(2, 2) == 4);                        // REQUIRE型预言检测
29
30 }
31
32 BOOST_AUTO_TEST_CASE(Tested_Method_testException_Test)                // 测试用例
33 {
34     // TODO: Your test code here
35     BOOST_REQUIRE_NO_THROW(tmpTested->testException());                // 验证是否无异常抛出,是则为真
36     BOOST_REQUIRE_THROW(tmpTested->testException(), logic_error);    // 验证抛出的是否是logic_error异常
37     BOOST_REQUIRE_THROW(tmpTested->testException(), runtime_error);    // 验证抛出的是否是runtime_error异常
38
39 }
40
41 BOOST_AUTO_TEST_SUITE_END()
  很显示,程序的运行结果如下:
  35 BOOST_REQUIRE_NO_THROW(tmpTested->testException());              // 测试不通过
  36 BOOST_REQUIRE_THROW(tmpTested->testException(), logic_error);    // 测试通过
  37 BOOST_REQUIRE_THROW(tmpTested->testException(), runtime_error);  // 测试不通过
  如果要进行更复杂的测试,可以参考官方文档。
33/3<123
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号