Qt Testlib 基本使用 (2)

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

添加一组数据:

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:public QObject

 {
     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";
 }
 
添加数据之后的结果示意图如下:
 
  
index name string result
0 all lower "hello" HELLO
1 mixed "Hello" HELLO
2 all upper "HELLO" HELLO
 
 
 void TestQString::toUpper()
 {
     // 使用宏QFETCH,读取数据, 参数1 表示数据的类型,数据2 是之前添加数据时使用的名字。
     // 这里通过名字获取数据,让testcase 与添加数据逻辑分开,当需要添加,减少数据时无需修改测试用例。
 
     QFETCH(QString, string);
     QFETCH(QString, result);
 
  
     QCOMPARE(string.toUpper(), result);
 }
 
  

 

你可能感兴趣的:(Qt,Test)