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
Getting started 2(3)• Create the simplest test in your project
Getting started 3(2)• And a script that runs the test: runTests.sh in this case#!/bin/bashclear/Users/artem/QtSDK/Desktop/Qt/471/gcc/bin/QMLViewer.app/Contents/MacOS/QMLViewer tst_tddCalculator2.qml
Current Limitations• Installation doesn’t install qtest-qml to QtCreator 2.1 Tech Preview – 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 – 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
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
Current limitations• SignalSpy can only count – It cannot examine the signal arguments or the state of other objects• 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
Thank you Q&As time You can find these slides athttp://agilesoftwaredevelopment.com/tags/tdd
A particular slide catching your eye?
Clipping is a handy way to collect important slides you want to go back to later.