ITK/Release 4/Modularization/ Add tests: Difference between revisions
No edit summary |
|||
Line 18: | Line 18: | ||
== Regression tests: == | == Regression tests: == | ||
The CMake macro "CreateTestDriver" defined in | === 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 | You can find Approach A used in most of the ITK modules. | ||
for example in | for example in | ||
Line 46: | Line 55: | ||
=== 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 | |||
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 | 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