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

From KitwarePublic
Jump to navigationJump to search
No edit summary
Line 12: Line 12:
* Approach a): using the test driver macro
* 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.
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.
e.g. set(ITK-FooFilterTests
 
        itkFooFilterTest1.cxx
{{#tag:syntaxhighlight
        itkFooFilterTest2.cxx)
|
      CreateTestDriver(ITK-FooFilter  "${ITK_FooFilter-Test_LIBRARIES}"  "${ITK-FooFilterTest}")
 
  set(ITK-FooFilterTests
    itkFooFilterTest1.cxx
    itkFooFilterTest2.cxx)
 
  CreateTestDriver(ITK-FooFilter  "${ITK_FooFilter-Test_LIBRARIES}"  "${ITK-FooFilterTest}")
       add_test(NAME  itkFooFilterTest1
       add_test(NAME  itkFooFilterTest1
             COMMAND  itk-FooFilterTestDriver  itkFooFilterTest1)
             COMMAND  itk-FooFilterTestDriver  itkFooFilterTest1)
Line 21: Line 26:
             COMMAND  itk-FooFilterTestDriver  itkFooFilterTest2)
             COMMAND  itk-FooFilterTestDriver  itkFooFilterTest2)


You can find Apprach b) used in most of the ITK modules (e.g. "ITK/Modules/IO/BMP/test/CMakeLists.txt").
 
|lang=cmake}}
 
 
You can find Approach (b) used in most of the ITK modules.
for example in
 
    ITK/Modules/IO/BMP/test/CMakeLists.txt





Revision as of 22:53, 4 April 2011

Non-regression tests

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

 e.g. 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)


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.

e.g. 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)

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 (e.g. "ITK/Examples/Filtering/test/CMakeLists.txt").