ITK/Release 4/Modularization/ Add tests

From KitwarePublic
< ITK‎ | Release 4‎ | Modularization
Revision as of 22:55, 4 April 2011 by Ibanez (talk | contribs)
Jump to navigationJump to search

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 (b) 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 suitable.


<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