QTestlib 学习 第四天数据驱动测试

上一篇 / 下一篇  2012-03-02 19:06:42 / 个人分类:QT测试

  

在上面我们完成了第一个单元测试,并测试了一项数据。但是在实际测试中,要对多种边界数据进行测试,需要逐项初始化,完成测试,但这样非常的麻烦。而Qtestlib给我们提供了QTest::addColumn()函数建立需要的测试的数据列,QTest::newRow()函数添加数据列。初始化数据的函数名和测试函数名一样,但添加了后缀_data(),这里通过一个例子说明如何进行批处理数据测试,被测试类还是使用上面的Mainwindow类。

示例四:

#include <QtCore/QString>

#include <QtTest/QtTest>

#include "mainwindow.h"

using namespace QTest;

class TestProjetcATest : public QObject

{

   Q_OBJECT   

public:

   TestProjetcATest(); 

private Q_SLOTS:

   //每个私有的private slot函数都是会自动调用的测试函数

   void testCase1();

    //"_data"结尾的函数行对应的测试函数提供测试数据

   void testCase1_data();

   void testCase2();

   void testCase2_data();

};

TestProjetcATest::TestProjetcATest()

{

}

void TestProjetcATest::testCase1()

{

   QFETCH(qint32,int1);

   QFETCH(qint32,int2);

   QFETCH(qint32,reint);

   QCOMPARE(MainWindow::sumab(int1,int2),reint);

}

void TestProjetcATest::testCase1_data(){

   //添加数据列

   QTest::addColumn<qint32>("int1");

   QTest::addColumn<qint32>("int2");

   QTest::addColumn<qint32>("reint");

   //添加数据

   QTest::newRow("i1") << 2 << 3 << 5;

   QTest::newRow("i2") << 56 <<40 << 96;

}

void TestProjetcATest::testCase2(){

   QFETCH(QString,string1);

   QFETCH(QString,string2);

   QFETCH(QString,result);

   QCOMPARE(MainWindow::sumab(string1,string2),result);

}

void TestProjetcATest::testCase2_data()

{

   //添加数据列

   QTest::addColumn<QString>("string1");

   QTest::addColumn<QString>("string2");

   QTest::addColumn<QString>("result");

   //添加测试数据

   QTest::newRow("first") << "he" << "llo" << "hello";

   QTest::newRow("two") << "He" << "llo" << "Hello";

}

//用于构建可执行的测试程序

QTEST_APPLESS_MAIN(TestProjetcATest)

#include "tst_testprojetcatest.moc"

示例四的运行结果:

 


TAG:

 

评分:0

我来说两句

Open Toolbar