Home
Name Modified Size InfoDownloads / Week
README.md 2011-06-28 2.2 kB
Totals: 1 Item   2.2 kB 0

QTestLib TestRunner 0.9.00

QTestLib TestRunner is a simple application to run QTestLib tests from user interface. It aims to deliver mostly same experience as different XUnit UI runners.

Main window

TestRunner assumes that you use standard QTest tests which are compiled to executable files which support standard command line parameters. TestRunner works by running executables as separate processes with XML output and processing this output. So, to work properly your tests should allow such output. It works if you use standard QTEST_MAIN macro and if you running multiple tests in your main() function via QTest::qExec().

For TestRunner to work you should set your test folder in settings and also set test name regexp to allow file filtering. By default TestRunner uses «^te?st_» regexp. So, when you hit «Update executables list» button, it will find all executables starting with «test_» or «tst_».

Preferences window

TestRunner allows you to form basic test suits from found tests. You can include or exclude some executables by checking or unchecking corresponding checkboxes. After that you can save/load your test cases. Also TestRunner will automatically save and load latest test configuration.

Known issues

  • As TestRunner tries to run multiple processes at once there could be race conditions if your tests depend on timing or some other deficient resource. It will result in failed tests which would otherwise pass without problems. If this problem arises, consider running tests with deficient resources separately or split whole test suite into smaller ones.
  • TestRunner was not tested with GUI tests, so I do not now how it would behave in such cases.
  • There is no way to run only selected test functions. This is limitation of QTestLib itself. It allows you to run separate test functions only when you have one test class per executable. If you have more than one class which is run through QTest::qExec() there is no way to run separate methods for all these classes.
Source: README.md, updated 2011-06-28