How to test-drive your Qt QML code. Overview on how you do simple testing, UI level testing, synchronous testing, data-driven testing.
These are the slides used in the Helsinki MeeGo meetup in 2012.
3. Test-Driven Development. Or just
testing QML
• What TDD is about
• Getting started
• Simple Synchronous test
• Simulating mouse and keyboard actions
• Asynchronous tests (verifying callbacks)
• Data-driven tests
• Current limitations
• Q&As
8. Getting started 3(2)
• And a script that runs the test: runTests.sh in this case
#!/bin/bash
clear
/Users/artem/QtSDK/Desktop/Qt/471/gcc/bin/QMLViewer.app/Contents/MacOS/QML
Viewer tst_tddCalculator2.qml
15. Current Limitations
• Installation doesn’t install qtest-qml to QtCreator
– Not that you would need it for TDD, but if you are into
“just testing” already written code, debugger may be
helpful
• Bug: only one TestCase is allowed:
http://bugreports.qt.nokia.com/browse/QTBUG-17200 (possibly fixed for 4.8)
– It makes init() and cleanup nearly useless
– Organize your test structure by your own tools
• Small difficulties comparing built-in classes (e.g.
color)
– toString() helps most of the time
16. Current limitations
• Very strange errors when object/property can be
accessed e.g. because of a typo
• Segmentation faults, sometimes even “file not found”
• In 95% of cases that is a typo or an attempt to access a
non-public property
17. Current limitations
• SignalSpy can only count
– It cannot examine the signal arguments or the state of
other objects. Is supposed to be fixed for Qt 5.0
• Benchmarking is a part of a qtest-qml, but
doesn’t work properly
– That is I failed to make it run for a given amount of
times (most of the time it does just a single run)
• No built-in device test runners
– Though you can certainly, embed a “run tests” button
right into your application
18. My company TwineLAB Oy
• Startup with proven financing
• We need more people excited about high quality
software and bringing end-to-end products to people
• Buzzwords:
– Qt/QML
– Linux platform
– high quality SW
– video/audio codecs
– server-side Java / GWT
– large-scale metrics
artem.marchenko@twinelab.com
19. Q&As time
You can find these [and nearly identical older
version of the same] slides at
http://agilesoftwaredevelopment.com/tags/tdd
Further contacts:
http://fi.linkedin.com/in/artemmarchenko
artem.marchenko@twinelab.com
Notas del editor
Adding numbers continuously – property bindingChange color when result is over 1000 => .toString() when comparing complex built-in objectsMove to states. Change the default color