How to use QCOMPARE Macro to compare events
I have MyWindow class which pops up a blank window, which accepts a mouse click, I need to unit test the mouse click event
Code snippet:
void TestGui::testGUI_data()
{
QTest::addColumn<QTestEventList>("events");
QTest::addColumn<QTestEventList>("expected");
Mywindow mywindow;
QSize editWidgetSize = mywindow.size();
QPoint clickPoint(editWidgetSize.rwidth()-2, editWidgetSize.rheight()-2);
QTestEventList events, expected;
events.addMouseClick( Qt::LeftButton, 0, clickPoint);
expected.addMouseClick( Qt::LeftButton, 0, clickPoint);
QTest::newRow("mouseclick") << events << expected ;
}
void TestGui::testGUI()
{
QFETCH(QTestEventList, events);
QFETCH(QTestEventList, expected);
Mywindow mywindow;
mywindow.show();
events.simulate(&mywind开发者_JAVA技巧ow);
QCOMPARE(events, expected); } // prints FAIL! : TestGui::testGUI(mouseclick) Compared values are not the same
...
}
How to test the mouse click on mywindow
. is there any better approach to unit test mouse events?
Thanks, vels
Take a look on QTest namespace documentation. There is QTest::mouseClick function which allows you to emulate mouse click on the given position of your widget (there is even no necessity to show the widget).
As far as I remember QCOMPARE uses "operator==" for the arguments given and if it returns false then it tries to print it using "QTest::toString<T>(const T& t)" function. If there is no implementation for a type of QCOMPARE arguments then it will just print that values are different. Again take a look on the QTest namespace documentation for details how to reimplement "QTest::toString<T> (const T& t)" for the type you need.
精彩评论