#define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one cpp file
#include "catch.hpp"
unsigned int Factorial( unsigned int number ) {
return number <= 1 ? number : Factorial(number-1)*number;
}
TEST_CASE( "Factorials are computed", "[factorial]" ) {
REQUIRE( Factorial(1) == 1 );
REQUIRE( Factorial(2) == 2 );
REQUIRE( Factorial(3) == 6 );
REQUIRE( Factorial(10) == 3628800 );
}
肯定有人会给你推荐一些经典的单元测试框架,如GoogleTest, cppunit 之类。
但我负责任的告诉你,那些框架太折腾了,你需要花很多时间和精力去学习使用,然后即使是一个非常非常小的项目,也要配置半天。
推荐给你一个新兴的单元测试框架:Catch
它简单到什么程度?你只需要引入一个头文件:
另外,它因为非常简单轻巧,所以很容易学习,把这个简短的教程看一遍,基本就掌握了。
为了更直观的了解这个框架,贴出教程上的一个例子:
这就是测试一个斐波那契函数的全过程。感觉如何?
因为你标题注明了是C++,所以我也先入为主的认为你是想找单元测试实践方面的资料。针对C++语言的单元测试书籍非常少,我就推荐一本吧:
Modern C++ Programming with Test-Driven Development
如果你是对单元测试用例设计的理论知识感兴趣,求资料。那么我建议你去了解一下TDD的相关知识,然后就可以去看一些有针对性的书籍(只推荐一本,讲的非常具体):
甚至还可以先去对软件测试这个领域进行一些基本的了解,推荐几本书:
请问我使用Catch,把catch.h头文件放置在工程文件夹下,运行上面这个例子后返回的是:
是乱码的原因吗