ITK/Release 4/Modularization/ Add tests: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
== | == Non-regression tests == | ||
The same way it used to be, except the "add_test" command: | |||
* | *add_executable( [executable name] [source file or files]) | ||
*target_link_libraries([executable name] <name of libraries]) | |||
*adopt the modern CMake syntax :[NAME, COMMAND]: add_test(NAME [test name] COMMAND [executable name] [arguments]) | |||
e.g. add_executable(itkBinaryThresholdFilterTest itkBinaryThresholdFilterTest.cxx) | |||
target_link_libraries(itkBindaryThresholdFilterTest ${ITK-BinaryThreshold_LIBRARIES}) | |||
add_test(NAME itkBinaryThresholdFilterTest | |||
COMMAND itkBinaryThresholdFilterTest input.png output.png) | |||
* Approach | == Regression tests(need test driver): == | ||
The CMake macro "CreateTestDriver" defined in "Module/Core/TestKernal/CreateTestDriver.cmake" is designed to make it easy to do regression tests in ITK. | * Approach a): using the test driver macro | ||
The CMake macro "CreateTestDriver" defined in "Module/Core/TestKernal/CreateTestDriver.cmake" is designed to make it easy to do regression tests in ITK. All the tests in one module share one test driver. | |||
e.g. set(ITK-FooFilterTests | e.g. set(ITK-FooFilterTests | ||
itkFooFilterTest1.cxx | itkFooFilterTest1.cxx | ||
itkFooFilterTest2.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) | |||
You could also find the usage of the test driver macro in any of the ITK modules (e.g. "ITK/Modules/IO/BMP/test/CMakeLists.txt") | |||
* Approach b): stand-alone regression test | |||
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) | |||
You could find Apprach b) used in Examples (e.g. "ITK/Examples/Filtering/CMakeLists.txt") | |||
- | |||
Revision as of 16:57, 4 April 2011
Non-regression tests
The same way it used to be, except the "add_test" command:
- add_executable( [executable name] [source file or files])
- target_link_libraries([executable name] <name of libraries])
- adopt the modern CMake syntax :[NAME, COMMAND]: add_test(NAME [test name] COMMAND [executable name] [arguments])
e.g. add_executable(itkBinaryThresholdFilterTest itkBinaryThresholdFilterTest.cxx) target_link_libraries(itkBindaryThresholdFilterTest ${ITK-BinaryThreshold_LIBRARIES}) add_test(NAME itkBinaryThresholdFilterTest COMMAND itkBinaryThresholdFilterTest input.png output.png)
Regression tests(need test driver):
- Approach a): using the test driver macro
The CMake macro "CreateTestDriver" defined in "Module/Core/TestKernal/CreateTestDriver.cmake" is designed to make it easy to do regression tests in ITK. All the tests in one module share one test driver.
e.g. 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)
You could also find the usage of the test driver macro in any of the ITK modules (e.g. "ITK/Modules/IO/BMP/test/CMakeLists.txt")
- Approach b): stand-alone regression test
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)
You could find Apprach b) used in Examples (e.g. "ITK/Examples/Filtering/CMakeLists.txt")
-