QtTest回放GUI事件
第四章:回放GUI事件
如何回放GUI事件。
在本章中,我們將展示如何模擬GUI事件,以及如何儲存一系列GUI事件以及在小部件上重放它們。
儲存一系列事件並回放它們的方法與第2章中解釋的方法非常相似。你所需要做的就是新增一個資料函式到你的測試類:
// testgui.cpp
#include <QtWidgets>
#include <QtTest/QtTest>
class TestGui : public QObject
{
Q_OBJECT
private slots:
void testGui_data();
void testGui();
};
void TestGui::testGui_data()
{
QTest::addColumn<QTestEventList>("events");
QTest::addColumn<QString>("expected");
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);
}
QTEST_MAIN(TestGui)
#include "testgui.moc"
寫入資料函式
與前面一樣,測試函式的關聯資料函式具有相同的名稱,後面加上_data。
void TestGui::testGui_data()
{
QTest::addColumn<QTestEventList>("events");
QTest::addColumn<QString>("expected");
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 << "";
}
首先,我們使用QTest::addColumn()函式定義表的元素:GUI事件列表,以及在QWidget上應用事件列表的預期結果。注意,第一個元素的型別是QTestEventList。
QTestEventList可以用GUI事件填充,這些事件可以儲存為測試資料供以後使用,也可以在任何QWidget上回放。
在當前的資料函式中,我們建立了兩個QTestEventList元素。第一個列表包含對“a”鍵的單擊。我們使用QTestEventList::addKeyClick()函式將事件新增到列表中。然後使用QTest::newRow()函式為資料集提供一個名稱,並將事件列表和預期結果流到表中。
第二個列表由兩個按鍵組成:一個“a”和後面的“退格”。同樣,我們使用QTestEventList::addKeyClick()將事件新增到列表中,使用QTest::newRow()將事件列表和預期結果放入具有關聯名稱的表中。
重寫測試函式
我們的測試現在可以重寫:
void TestGui::testGui()
{
QFETCH(QTestEventList, events);
QFETCH(QString, expected);
QLineEdit lineEdit;
events.simulate(&lineEdit);
QCOMPARE(lineEdit.text(), expected);
}
TestGui:: TestGui()函式將執行兩次,一次針對我們在關聯的TestGui::testGui_data()函式中建立的測試資料中的每個條目。
首先,我們使用QFETCH()巨集獲取資料集的兩個元素。QFETCH()接受兩個引數:元素的資料型別和元素名稱。然後,我們建立一個QLineEdit,並使用QTestEventList::simulate()函式在小部件上應用事件列表。
最後,我們使用QCOMPARE()巨集檢查行編輯的文字是否符合預期。
QTEST_MAIN(TestGui)
#include "testgui.moc"
QTEST_MAIN()巨集擴充套件為一個簡單的main()方法,該方法執行所有測試函式。注意,如果我們的測試類的宣告和實現都在.cpp檔案中,我們還需要包括生成的moc檔案,以使Qt的自省工作。
相關文章
- Java-GUI程式設計之事件處理JavaGUI程式設計事件
- guiGUI
- 基於 Apache Hudi 構建增量和無限回放事件流的 OLAP 平臺Apache事件
- 簡單探討C#中GUI程式設計的標準事件問題C#GUI程式設計事件
- 騰訊會議怎麼看回放?騰訊會議回放的方法教程
- python gui專案PythonGUI
- GUI程式設計GUI程式設計
- 流量錄製回放工具jvm-sandbox-repeater入門篇——錄製和回放JVM
- Qt/C++路徑軌跡回放/回放每個點訊號/回放結束訊號/拿到移動的座標點經緯度QTC++
- Linux: Desktop Environment DE GUILinuxGUI
- 01 GUI程式設計GUI程式設計
- GUI介面程式碼(家)GUI
- Sourcetree(git GUI)安裝GitGUI
- GUI.BeginClip裁剪使用GUI
- ROS GUI-node,npmROSGUINPM
- JavaScript元素拖拽路徑回放效果JavaScript
- JAVA GUI學習 繼續JavaGUI
- 14.GUI 程式設計GUI程式設計
- python實戰GUI介面+mysqlPythonGUIMySql
- python爬京東(帶GUI)PythonGUI
- NEO GUI 多方簽名使用GUI
- 【Python】GUI開發筆記PythonGUI筆記
- JD-GUI中文亂碼GUI
- 視訊回放編輯工具:Mitti MacMITMac
- Mitti for Mac(視訊回放編輯工具)MITMac
- python的GUI程式設計和tkinter學習筆記——第一個GUI程式PythonGUI程式設計筆記
- 12.3 實現模擬滑鼠錄製回放
- Android SMSSDK無GUI介面整合方法AndroidGUI
- NEO-GUI 客戶端使用GUI客戶端
- PyQt5 GUI程式設計QTGUI程式設計
- GUI成績檢測程式碼GUI
- 什麼是SAP GUI的clientGUIclient
- GUI程式設計process4GUI程式設計
- 在Linux中,什麼是 GUI?LinuxGUI
- 用Ruby來開發GUI程式GUI
- 樹莓派GUI程式設計樹莓派GUI程式設計
- win10 電腦音訊怎麼啟動gui windows10怎麼啟動guiWin10音訊GUIWindows
- 【賽事回放】英雄聯盟API資料介面API