Difference between revisions of "Documentation/Nightly/Developers/QtTesting"

From Slicer Wiki
Jump to: navigation, search
Line 7: Line 7:
 
=Write a 3DSlicer UnitTest with QtTesting=
 
=Write a 3DSlicer UnitTest with QtTesting=
  
== 1/ Create your XML script ==
+
== Create your XML script ==
 
See [http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/SlicerApplication/QtTesting QtTesting user Wiki] to know how to create this xml script.<br>
 
See [http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/SlicerApplication/QtTesting QtTesting user Wiki] to know how to create this xml script.<br>
 
Save the xml script to ''Slicer4/Application/SlicerApp/Testing/QtTesting/Slicer4.X.X_tutorial_MY_TUTORIAL_NAME.xml''<br>
 
Save the xml script to ''Slicer4/Application/SlicerApp/Testing/QtTesting/Slicer4.X.X_tutorial_MY_TUTORIAL_NAME.xml''<br>
Line 15: Line 15:
 
}}
 
}}
  
== 2/ Create a Python script ==
+
== Create a Python script ==
 
''This Python test will start 3DSlicer and run the previously recorded xml script''
 
''This Python test will start 3DSlicer and run the previously recorded xml script''
  
Line 33: Line 33:
 
'''''Save to the directory ''''' <code>${Slicer_SOURCE_DIR}/Applications/SlicerApp/Testing/Python/ </code>
 
'''''Save to the directory ''''' <code>${Slicer_SOURCE_DIR}/Applications/SlicerApp/Testing/Python/ </code>
  
== 3/ Add the test in CMake ==
+
== Add the test in CMake ==
 
Adding the test in CMake will alloq the test to be run with CTest and will also be run by the dashboard machines every nights.
 
Adding the test in CMake will alloq the test to be run with CTest and will also be run by the dashboard machines every nights.
  
Line 50: Line 50:
 
You just wrote a Slicer Unit Test using QtTesting framework !
 
You just wrote a Slicer Unit Test using QtTesting framework !
  
==Run your test==
+
== Run your test==
  
 
=Create custom translator/player=
 
=Create custom translator/player=

Revision as of 18:52, 24 May 2012

Home < Documentation < Nightly < Developers < QtTesting

Overview

QtTesting provides us a testing framework to test our application. It complements unit tests, by testing the application in its globality.

Following is a step by step guide to create slicer unit test, or module unit test, using this framework, which can be run as part of a nightly build automatic testing.

Write a 3DSlicer UnitTest with QtTesting

Create your XML script

See QtTesting user Wiki to know how to create this xml script.
Save the xml script to Slicer4/Application/SlicerApp/Testing/QtTesting/Slicer4.X.X_tutorial_MY_TUTORIAL_NAME.xml

Create a Python script

This Python test will start 3DSlicer and run the previously recorded xml script

Create a file with the following code

   import slicer
   import slicer.testing
   import slicer.util
   filepath = os.environ['SLICER_HOME'] + 'path/to/your/script.xml'
   testUtility = slicer.app.testingUtility()
   success = testUtility.playTests(filepath)
   if success :
       slicer.util.exit(EXIT_SUCCESS)
   else:
       slicer.util.exit(EXIT_FAILURE)

Save to the directory ${Slicer_SOURCE_DIR}/Applications/SlicerApp/Testing/Python/

Add the test in CMake

Adding the test in CMake will alloq the test to be run with CTest and will also be run by the dashboard machines every nights.

Edit the file Slicer4/Applications/SlicerApp/Testing/Python/CMakeLists.txt
Add your test at the end of the Slicer_USE_QTTESTING condition:

   if(Slicer_USE_QTTESTING)
     {   
     ...
     slicer_add_python_test(
       SCRIPT pythonScriptName.py
       SLICER_ARGS --launcher-no-splash --qt-testing)
     }


You just wrote a Slicer Unit Test using QtTesting framework !

Run your test

Create custom translator/player

QTTesting provides us basic translator and player template.
You can use the following command to create those basic files.

Linux Mac Windows

You need to open a terminal and go to the Slicer4 source directory.
Then type in the terminal:

$ cd path/to/Slicer4-Superbuild/CTK-build/QtTesting/Utilities/Scripts
$ python TranslatorPlayerWizard.py MY_WIDGET_NAME
$ cd ../MY_WIDGET_NAME

You need to open a terminal and go to the Slicer4 source directory.
Start -> Microsoft Visual Studio 2008 -> Visual Studio Tools -> Visual Studio 2008 Command Prompt
Then type in the terminal:

$ cd path\to\Slicer4-Superbuild
$ python-build\PCBuild\python.exe CTK-build\QtTesting\Utilities\Scripts\ModuleWizard.py MY_WIDGET_NAME
$ cd ../MY_WIDGET_NAME

Open bugs

Work in progress, following the two bug trackers :

Slicer issues

QtTesting issues