ITK/Release 4/Modularization/ Add tests: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
No edit summary
Line 18: Line 18:


== Regression tests: ==
== Regression tests: ==
* Approach a): using the test driver macro
 
The CMake macro "CreateTestDriver" defined in "Module/Core/TestKernal/CreateTestDriver.cmake" is designed for grouped regression tests in ITK. All the tests in one module share one test driver.
=== Approach A ===
 
Using the test driver macro
The CMake macro "CreateTestDriver" defined in  
 
  Module/Core/TestKernal/CreateTestDriver.cmake
 
is designed for grouped regression tests in ITK.  
 
All the tests in one module share one test driver.


{{#tag:syntaxhighlight
{{#tag:syntaxhighlight
Line 40: Line 49:




You can find Approach (b) used in most of the ITK modules.
You can find Approach A used in most of the ITK modules.
for example in
for example in


Line 46: Line 55:




* Approach b): stand-alone regression tests
=== Approach B ===
There is also a test driver executable("itkTestdriver") designed for stand-alone regression tests. For instance, all the tests in Examples are stand-alone programs each has its own main function call, in which case, the approach a) is not suitable.
 
Stand-alone regression tests
 
There is also a test driver executable("itkTestdriver") designed for stand-alone regression tests. For instance, all the tests in Examples are stand-alone programs each has its own main function call, in which case, the approach A is not appropriate.




Line 69: Line 81:
in the add_test command triggers CMake to locate the executable automatically. No need to specify the path for the executable here.
in the add_test command triggers CMake to locate the executable automatically. No need to specify the path for the executable here.


You can find Approach (b) used in Examples.
You can find Approach B used in Examples.
 
For example in
For example in


   ITK/Examples/Filtering/test/CMakeLists.txt
   ITK/Examples/Filtering/test/CMakeLists.txt

Revision as of 22:58, 4 April 2011

Non-regression tests

The same way it used to be, except the newer syntax in "add_test" command:

<syntaxhighlight lang="cmake">

add_executable(itkBinaryThresholdFilterTest itkBinaryThresholdFilterTest.cxx)
target_link_libraries(itkBindaryThresholdFilterTest ${ITK-BinaryThreshold_LIBRARIES})
     
# adopt the modern CMake syntax :[NAME, COMMAND]
add_test(NAME itkBinaryThresholdFilterTest  
        COMMAND itkBinaryThresholdFilterTest input.png output.png)

</syntaxhighlight>


Regression tests:

Approach A

Using the test driver macro The CMake macro "CreateTestDriver" defined in

 Module/Core/TestKernal/CreateTestDriver.cmake

is designed for grouped regression tests in ITK.

All the tests in one module share one test driver.

<syntaxhighlight lang="cmake">

 set(ITK-FooFilterTests
    itkFooFilterTest1.cxx
    itkFooFilterTest2.cxx)
 CreateTestDriver(ITK-FooFilter  "${ITK_FooFilter-Test_LIBRARIES}"  "${ITK-FooFilterTest}")
 add_test(NAME  itkFooFilterTest1
          COMMAND  itk-FooFilterTestDriver  itkFooFilterTest1)

 add_test(NAME  itkFooFilterTest2
          COMMAND  itk-FooFilterTestDriver  itkFooFilterTest2)


</syntaxhighlight>


You can find Approach A used in most of the ITK modules. for example in

   ITK/Modules/IO/BMP/test/CMakeLists.txt


Approach B

Stand-alone regression tests

There is also a test driver executable("itkTestdriver") designed for stand-alone regression tests. For instance, all the tests in Examples are stand-alone programs each has its own main function call, in which case, the approach A is not appropriate.


<syntaxhighlight lang="cmake">

  add_exectuable(itkFooTest itkFooTest.cxx)
  target_line_libraries( itkFooTest ${ITK_LIBRARIES})
  add_test(NAME  itkFooTest
           COMMAND  itkTestDriver
           --compare  outputBaseline.png output.png
                      $<TARGET_FILE:itkFooFilterTest> input.png output.png)

</syntaxhighlight>


The new syntax

    :$<TARGET_FILE: xxx> 

in the add_test command triggers CMake to locate the executable automatically. No need to specify the path for the executable here.

You can find Approach B used in Examples.

For example in

 ITK/Examples/Filtering/test/CMakeLists.txt