C++编程思想 第2卷 第2章 防御性编程 一个简单的单元测试框架 测试套件

本文介绍了C++项目中的防御性编程策略,重点讲解了一个简单的单元测试框架,该框架允许程序员通过一个按钮来测试整个项目。测试案例被组织在头文件中,静态数据在实现文件中定义。Suite类的析构函数不直接管理Test对象,而是通过Suite::free()方法来释放。测试结果显示所有测试用例均通过。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实际的软件项目通常包含很多类,需要一个组织测试用例的方式,使
程序设计人员能够通过按一个按钮来测试整个项目

//: C03:StringSuite.cpp
// From "Thinking in C++, Volume 2", by Bruce Eckel & Chuck Allison.
// (c) 1995-2004 MindView, Inc. All Rights Reserved.
// See source code use permissions stated in the file 'License.txt',
// distributed with the code package available at www.MindView.net.
//{L} ../TestSuite/Test ../TestSuite/Suite
//{L} TrimTest
// Illustrates a test suite for code from Chapter 3
#include <iostream>
#include "../TestSuite/Suite.h"
#include "StringStorage.h"
#include "Sieve.h"
#include "Find.h"
#include "Rparse.h"
#include "TrimTest.h"
#include "CompStr.h"
using namespace std;
using namespace TestSuite;

int main() {
    Suite suite("String Tests");
    suite.addTest(new StringStorageTest);
    suite.addTest(new SieveTest);
    suite.addTest(new FindTest);
    suite.addTest(new RparseTest);
    suite.addTest(new TrimTest);
    suite.addTest(new CompStrTest);
    suite.run();
    long nFail = suite.report();
    suite.free();
    return nFail;
    getchar();
}
/* Output:
s1 = 62345
s2 = 12345
Suite "String Tests"
====================
Test "StringStorageTest":
   Passed: 2   Failed: 0
Test "SieveTest":
   Passed: 50  Failed: 0
Test "FindTest":
   Passed: 9   Failed: 0
Test "RparseTest":
   Passed: 8   Failed: 0
Test "TrimTest":
   Passed: 11  Failed: 0
Test "CompStrTest":
   Passed: 8   Failed: 0
*/ ///:~

测试案例完全包含在头文件中
因为TrimTest包含一个静态数据,而静态数据必须定义在实现文件中,
所以TrimTest不但需要一个头文件,而且还需要实现文件

Suite的析构函数并不能自动删除它包含的指向Test对象的指针,因为
这些Test对象并不需要保留在堆上,而这些工作由Suite::free()来
完成

输出
s1 = 62345
s2 = 12345
Suite "String Tests"
====================
Test "class StringStorageTest":
        Passed: 2       Failed: 0
Test "class SieveTest":
        Passed: 50      Failed: 0
Test "class FindTest":
        Passed: 9       Failed: 0
Test "class RparseTest":
        Passed: 8       Failed: 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值