2.1 数据驱动测试简介
在前一章单体测试的例子中,测试的数据只有一条,对于这个简单的被测函数来说也算够用。但是被测函数往往比较复杂,它可能包含多个分支,每个分支有不同的处理。此时应该选取多条测试数据,覆盖到被测函数所有分支。如果按照之前的做法,需要在测试函数中准备多条测试数据,执行多次被测函数并比较结果,这会使得代码臃肿不易阅读。幸好,Qt Test中提供了一种数据驱动的测试方法,能够很好地解决这个问题。
2.2 数据驱动测试方法
这种方法将原来测试函数中的处理拆分成两个部分,准备测试数据和执行被测函数,分别在数据驱动函数和测试函数中来做。数据驱动函数是一个新的函数,它也是以slot
形式存在于测试类中。它的命名有个规则:XXX_data()
,其中XXX
代表测试函数名。这种方法的思路是
- 准备测试数据
- 取出测试数据作为被测函数的输入和期待结果
- 执行被测函数得到实际输出
- 将实际输出与期待结果比较
其中第1步在数据驱动函数中进行,2,3,4步在测试函数中进行。下面对它详细介绍。
2.2.1 编写新的被测函数
首先对原来例子做些修改,编写一个复杂些的被测函数。假设Bulk_quote
继承自Quote
,它新增了两个成员:m_discount
折扣,m_minQuantity
能够打折所需的最小数量。此外,它还重写了Base类的net_price(int quantity