Qt Testlib 基本使用 (2)

来源:互联网 发布:java实现二叉树遍历 编辑:程序博客网 时间:2024/05/13 03:50

数据驱动测试,在一个测试用例上添加多个数据,运行多次的测试用例。

添加一组数据:

QCOMPARE(QString("hello").toUpper(),QString("HELLO"));

QCOMPARE(QString("Hello").toUpper(),QString("HELLO"));

QCOMPARE(QString("HELLO").toUpper(),QString("HELLO"));

这组数据都会调用同 一个测试用例。

Qt Testlib 提供很简单的添加数据方式,只需要在class 中多定义一个 private slot,

并且函数的名字与test case 的名字相同,然后在函数结尾处+ _data, 表示这是一个添加数据的函数。

class TestQString:publicQObject

 {
     Q_OBJECT
 private slots:
     void toUpper_data();
     void toUpper();
 };

 

测试数据会以类似表格的方式保存,下面就是创建这个数据表格

void TestQString::toUpper_data()

 {
     QTest::addColumn<QString>("string"); // 添加测试数据,创建表格中的第一列数据,数据的名字是 string, 这个名字会在 测试用例中使用
     QTest::addColumn<QString>("result"); // 添加测试数据,创建表格中的第二列数据,数据的名字是 result, 这个名字会在 测试用例中使用
 
     //使用函数newRow 添加数据到表格, newRow 带了一个参数,用于指示测试用例运行当当前数据的时候的名字。
     QTest::newRow("all lower") << "hello" << "HELLO";
     QTest::newRow("mixed")     << "Hello" << "HELLO";
     QTest::newRow("all upper") << "HELLO" << "HELLO";
 }
 
添加数据之后的结果示意图如下:
indexnamestringresult0all lower"hello"HELLO1mixed"Hello"HELLO2all upper"HELLO"HELLO
 
 
 void TestQString::toUpper()
 {
     // 使用宏QFETCH,读取数据, 参数1 表示数据的类型,数据2 是之前添加数据时使用的名字。
     // 这里通过名字获取数据,让testcase 与添加数据逻辑分开,当需要添加,减少数据时无需修改测试用例。
 
     QFETCH(QString, string);
     QFETCH(QString, result);
     QCOMPARE(string.toUpper(), result);
 }

 

0 0