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