通过eventlist 模拟多个event,测试widget 对event的处理情况。
class TestGui: public QObject
{
Q_OBJECT
private slots:
void testGui_data();
void testGui();
};
和之前测试function的方式一样,创建testcase 和 添加数据函数。
void TestGui::testGui_data()
{
QTest::addColumn<QTestEventList>("events");
QTest::addColumn<QString>("expected");
// 通过QTestEventList 保存模拟的输入按键
QTestEventList list1;
list1.addKeyClick('a');
QTest::newRow("char") << list1 << "a";
QTestEventList list2;
list2.addKeyClick('a');
list2.addKeyClick(Qt::Key_Backspace);
QTest::newRow("there and back again") << list2 << "";
}
void TestGui::testGui()
{
QFETCH(QTestEventList, events);
QFETCH(QString, expected);
QLineEdit lineEdit;
events.simulate(&lineEdit);
QCOMPARE(lineEdit.text(), expected);
}
处理一组输入按键,简化测试程序。