IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Chapter 4: Replaying GUI Events

How to replay GUI events.

Article lu   fois.

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Chapter 4: Replaying GUI Events▲

<Unknown command>contentspage{Qt Test Tutorial}{Contents}

In this chapter, we will show how to simulate a GUI event, and how to store a series of GUI events as well as replay them on a widget.

The approach to storing a series of events and replaying them is quite similar to the approach explained in https://. All you need to do is to add a data function to your test class:

 
Sélectionnez
class TestGui: public QObject
{
    Q_OBJECT

private slots:
    void testGui_data();
    void testGui();
};

Writing the Data Function▲

As before, a test function's associated data function carries the same name, appended by _data.

 
Sélectionnez
void TestGui::testGui_data()
{
    QTest::addColumn&lt;QTestEventList&gt;("events");
    QTest::addColumn&lt;QString&gt;("expected");

    QTestEventList list1;
    list1.addKeyClick('a');
    QTest::newRow("char") &lt;&lt; list1 &lt;&lt; "a";

    QTestEventList list2;
    list2.addKeyClick('a');
    list2.addKeyClick(Qt::Key_Backspace);
    QTest::newRow("there and back again") &lt;&lt; list2 &lt;&lt; "";
}

First, we define the elements of the table using the https://() function: A list of GUI events, and the expected result of applying the list of events on a https://. Note that the type of the first element is https://.

A https:// can be populated with GUI events that can be stored as test data for later usage, or be replayed on any https://.

In our current data function, we create two https:// elements. The first list consists of a single click to the 'a' key. We add the event to the list using the https://() function. Then we use the https://() function to give the data set a name, and stream the event list and the expected result into the table.

The second list consists of two key clicks: an 'a' with a following 'backspace'. Again we use the https://() to add the events to the list, and https://() to put the event list and the expected result into the table with an associated name.

Rewriting the Test Function▲

Our test can now be rewritten:

 
Sélectionnez
void TestGui::testGui()
{
    QFETCH(QTestEventList, events);
    QFETCH(QString, expected);

    QLineEdit lineEdit;

    events.simulate(&amp;lineEdit);

    QCOMPARE(lineEdit.text(), expected);
}

The TestGui::testGui() function will be executed two times, once for each entry in the test data that we created in the associated TestGui::testGui_data() function.

First, we fetch the two elements of the data set using the https://() macro. https://() takes two arguments: the data type of the element and the element name. Then we create a https://, and apply the list of events on that widget using the https://() function.

Finally, we use the https://() macro to check if the line edit's text is as expected.

As before, to make our test case a stand-alone executable, the following two lines are needed:

 
Sélectionnez
QTEST_MAIN(TestGui)
#include "testgui.moc"

The https://() macro expands to a simple main() method that runs all the test functions, and since both the declaration and the implementation of our test class are in a .cpp file, we also need to include the generated moc file to make Qt's introspection work.

List of Files▲

Files:

List of Files▲

  • tutorial4/testgui.cpp

  • tutorial4/tutorial4.pro

https://   https://

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Ce document est disponible sous la licence https:// telle que publiée par la Free Software Foundation.