diff --git a/Testing/CMakeLists.txt b/Testing/CMakeLists.txt
index c7989778f173728c8dd960710e8e4f86f2993ff5..62df7c35140f62c4a1c442960f9f7de4619557b5 100644
--- a/Testing/CMakeLists.txt
+++ b/Testing/CMakeLists.txt
@@ -10,6 +10,7 @@ FILE(MAKE_DIRECTORY ${OTBTesting_BINARY_DIR}/Temporary)
 
 IF(OTB_BINARY_DIR)
   # We are building inside the tree.
+  INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/TestingHelper.cmake)
   ADD_SUBDIRECTORY(Code)
   ADD_SUBDIRECTORY(Fa)
   ADD_SUBDIRECTORY(Utilities)
@@ -49,6 +50,8 @@ ELSE(OTB_BINARY_DIR)
     MARK_AS_ADVANCED(OTB_DATA_LARGEINPUT_ROOT)
   ENDIF(OTB_DATA_USE_LARGEINPUT)
 
+  INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/TestingHelper.cmake)
+
   MACRO(OTB_ADD_EXECUTABLE name sources libraries)
     ADD_EXECUTABLE(${name} ${sources})
     TARGET_LINK_LIBRARIES(${name}  ${libraries})
diff --git a/Testing/Code/ApplicationEngine/CMakeLists.txt b/Testing/Code/ApplicationEngine/CMakeLists.txt
index e3d711ad68f9a4189a6f4a61bc557162baf6b80b..1f7808c586a4f4295ea215301a0b52ab8f3dc021 100644
--- a/Testing/Code/ApplicationEngine/CMakeLists.txt
+++ b/Testing/Code/ApplicationEngine/CMakeLists.txt
@@ -1,6 +1,5 @@
 if( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 set(CXX_TEST_PATH ${EXECUTABLE_OUTPUT_PATH})
 
diff --git a/Testing/Code/BasicFilters/CMakeLists.txt b/Testing/Code/BasicFilters/CMakeLists.txt
index 3ad40a027b24fc06c2f6f73d3c02e72a12381242..456e9447a49de5d6fec1f0d8a802fc5c302534e5 100644
--- a/Testing/Code/BasicFilters/CMakeLists.txt
+++ b/Testing/Code/BasicFilters/CMakeLists.txt
@@ -1,7 +1,6 @@
 
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(BASICFILTERS_TESTS1 ${CXX_TEST_PATH}/otbBasicFiltersTests1)
 SET(BASICFILTERS_TESTS2 ${CXX_TEST_PATH}/otbBasicFiltersTests2)
diff --git a/Testing/Code/ChangeDetection/CMakeLists.txt b/Testing/Code/ChangeDetection/CMakeLists.txt
index 6cb707e41f4fcb102d88483633917e1046cd91d9..cb80c98765fcee1805b8b94232c2e7b947f5590c 100644
--- a/Testing/Code/ChangeDetection/CMakeLists.txt
+++ b/Testing/Code/ChangeDetection/CMakeLists.txt
@@ -1,7 +1,6 @@
 
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(CHANGEDETECTION_TESTS1 ${CXX_TEST_PATH}/otbChangeDetectionTests1)
 SET(CHANGEDETECTION_TESTS2 ${CXX_TEST_PATH}/otbChangeDetectionTests2)
diff --git a/Testing/Code/Common/CMakeLists.txt b/Testing/Code/Common/CMakeLists.txt
index c253fe59734d55764bff9f15a082a7a495a45212..b5ee7c1ba212b9910274919ec8f6a5e228c277e3 100644
--- a/Testing/Code/Common/CMakeLists.txt
+++ b/Testing/Code/Common/CMakeLists.txt
@@ -1,6 +1,5 @@
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(COMMON_TESTS1 ${CXX_TEST_PATH}/otbCommonTests1)
 SET(COMMON_TESTS2 ${CXX_TEST_PATH}/otbCommonTests2)
diff --git a/Testing/Code/DisparityMap/CMakeLists.txt b/Testing/Code/DisparityMap/CMakeLists.txt
index df1e336c94937377b3b6450478ecef49fbb720d5..dab7c7eb1d41e944a8c9eb7dd9549816b41a13ce 100644
--- a/Testing/Code/DisparityMap/CMakeLists.txt
+++ b/Testing/Code/DisparityMap/CMakeLists.txt
@@ -1,7 +1,6 @@
 
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(DISPARITYMAP_TESTS1 ${CXX_TEST_PATH}/otbDisparityMapTests1)
 SET(DISPARITYMAP_TESTS2 ${CXX_TEST_PATH}/otbDisparityMapTests2)
diff --git a/Testing/Code/FeatureExtraction/CMakeLists.txt b/Testing/Code/FeatureExtraction/CMakeLists.txt
index 72fa86d103db2e4bd5a574c304eb198831ed7925..a1c905c7f87729507cf4d63953a083da9fe2934c 100644
--- a/Testing/Code/FeatureExtraction/CMakeLists.txt
+++ b/Testing/Code/FeatureExtraction/CMakeLists.txt
@@ -1,7 +1,6 @@
 
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(FEATUREEXTRACTION_TESTS1 ${CXX_TEST_PATH}/otbFeatureExtractionTests1)
 SET(FEATUREEXTRACTION_TESTS2 ${CXX_TEST_PATH}/otbFeatureExtractionTests2)
diff --git a/Testing/Code/Fusion/CMakeLists.txt b/Testing/Code/Fusion/CMakeLists.txt
index 889d2d3e62a393ed3026671a2bc2b898de67b1c3..08bc51f6bc44ed7b44edc124a81fcf3978dcb40c 100644
--- a/Testing/Code/Fusion/CMakeLists.txt
+++ b/Testing/Code/Fusion/CMakeLists.txt
@@ -1,7 +1,6 @@
 
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(FUSION_TESTS1 ${CXX_TEST_PATH}/otbFusionTests1)
 
diff --git a/Testing/Code/Fuzzy/CMakeLists.txt b/Testing/Code/Fuzzy/CMakeLists.txt
index b1c75b44487c4945873aec6ccb9e2824cd64db9c..3c967cdbfe14141887b639d1ae8b95f509b41d4c 100644
--- a/Testing/Code/Fuzzy/CMakeLists.txt
+++ b/Testing/Code/Fuzzy/CMakeLists.txt
@@ -1,6 +1,5 @@
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 # Common generic tests
 SET(Fuzzy_TESTS1 ${CXX_TEST_PATH}/otbFuzzyTests1)
diff --git a/Testing/Code/GeospatialAnalysis/CMakeLists.txt b/Testing/Code/GeospatialAnalysis/CMakeLists.txt
index f5d5338e0e3dc2b5cd021a41ba4fa90ea94764e0..378f0a68e708dbb677c7c206bba4fa75778c7a3d 100644
--- a/Testing/Code/GeospatialAnalysis/CMakeLists.txt
+++ b/Testing/Code/GeospatialAnalysis/CMakeLists.txt
@@ -1,7 +1,6 @@
 
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(GEOSPATIALANALYSIS_TESTS ${CXX_TEST_PATH}/otbGeospatialAnalysisTests)
 
diff --git a/Testing/Code/Gui/CMakeLists.txt b/Testing/Code/Gui/CMakeLists.txt
index eb05e8c1d669f55cd94431c1f5f4a48ab3bbdc18..c8e8efe87efa227d76a46c9089ca85d209c77bef 100644
--- a/Testing/Code/Gui/CMakeLists.txt
+++ b/Testing/Code/Gui/CMakeLists.txt
@@ -1,7 +1,6 @@
 
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(GUI_TESTS ${CXX_TEST_PATH}/otbGuiTests)
 
diff --git a/Testing/Code/Hyperspectral/CMakeLists.txt b/Testing/Code/Hyperspectral/CMakeLists.txt
index d843b2fe09127e24789d620382e3909976020661..d44806e30e848c999153e24eb0448271e817087f 100644
--- a/Testing/Code/Hyperspectral/CMakeLists.txt
+++ b/Testing/Code/Hyperspectral/CMakeLists.txt
@@ -1,6 +1,5 @@
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(Hyperspectral_TESTS1 ${CXX_TEST_PATH}/otbHyperspectralTests1)
 SET(Hyperspectral_TESTS2 ${CXX_TEST_PATH}/otbHyperspectralTests2)
diff --git a/Testing/Code/IO/CMakeLists.txt b/Testing/Code/IO/CMakeLists.txt
index f432ede22eb96f248a67fdf94335933f3d194c84..76eac9d705a1655f33cb8ac320c9ced23ec02a29 100644
--- a/Testing/Code/IO/CMakeLists.txt
+++ b/Testing/Code/IO/CMakeLists.txt
@@ -1,7 +1,6 @@
 
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(COMMON_TESTS2 ${CXX_TEST_PATH}/otbCommonTests2)
 SET(COMMON_TESTS3 ${CXX_TEST_PATH}/otbCommonTests3)
diff --git a/Testing/Code/Learning/CMakeLists.txt b/Testing/Code/Learning/CMakeLists.txt
index bd0d803145f3ba3d4e779da4aa7bdd59b9a11dd8..a154528a210ca1ff78f99377a9eb0864e31ad86d 100644
--- a/Testing/Code/Learning/CMakeLists.txt
+++ b/Testing/Code/Learning/CMakeLists.txt
@@ -1,7 +1,6 @@
 
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(LEARNING_TESTS1 ${CXX_TEST_PATH}/otbLearningTests1)
 SET(LEARNING_TESTS2 ${CXX_TEST_PATH}/otbLearningTests2)
diff --git a/Testing/Code/Markov/CMakeLists.txt b/Testing/Code/Markov/CMakeLists.txt
index aa193aededd29176173a8c7e92971a757f014631..01f0047aa08e6b66dfc8613b37bfceaff49589c6 100644
--- a/Testing/Code/Markov/CMakeLists.txt
+++ b/Testing/Code/Markov/CMakeLists.txt
@@ -1,7 +1,6 @@
 
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(MARKOV_TESTS1 ${CXX_TEST_PATH}/otbMarkovTests1)
 SET(MARKOV_TESTS2 ${CXX_TEST_PATH}/otbMarkovTests2)
diff --git a/Testing/Code/MultiScale/CMakeLists.txt b/Testing/Code/MultiScale/CMakeLists.txt
index b7f88c3f52c3e69b5cd7f92876bac3c2cfb23a87..c1e60b566fcb23f2a7e6b8c29d1656a5ce197b93 100644
--- a/Testing/Code/MultiScale/CMakeLists.txt
+++ b/Testing/Code/MultiScale/CMakeLists.txt
@@ -1,7 +1,6 @@
 
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(MULTISCALE_TESTS1 ${CXX_TEST_PATH}/otbMultiScaleTests1)
 SET(MULTISCALE_TESTS2 ${CXX_TEST_PATH}/otbMultiScaleTests2)
diff --git a/Testing/Code/MultiTemporal/CMakeLists.txt b/Testing/Code/MultiTemporal/CMakeLists.txt
index 8aefd339ce9833fd2a4d612fb3dad3bfd2bf60d2..a207b8f4aaa17bc22b49c3e4c98ee512d1c802c0 100644
--- a/Testing/Code/MultiTemporal/CMakeLists.txt
+++ b/Testing/Code/MultiTemporal/CMakeLists.txt
@@ -1,7 +1,6 @@
 
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(MULTITEMPORAL_TESTS1 ${CXX_TEST_PATH}/otbMultiTemporalTests1)
 
diff --git a/Testing/Code/OBIA/CMakeLists.txt b/Testing/Code/OBIA/CMakeLists.txt
index fe95fb521f296492894b705395d2f45903ac5778..b62edac2363d3bbf76db4bce80f7123749d617b2 100644
--- a/Testing/Code/OBIA/CMakeLists.txt
+++ b/Testing/Code/OBIA/CMakeLists.txt
@@ -1,6 +1,5 @@
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 # Common generic tests
 SET(OBIA_TESTS1 ${CXX_TEST_PATH}/otbOBIATests1)
diff --git a/Testing/Code/ObjectDetection/CMakeLists.txt b/Testing/Code/ObjectDetection/CMakeLists.txt
index 00517bf0ff2b21f6cc559d22eb6ed5d253acc186..6d2a967466bb9bd227d47d53fd5c3f488f85e2fd 100644
--- a/Testing/Code/ObjectDetection/CMakeLists.txt
+++ b/Testing/Code/ObjectDetection/CMakeLists.txt
@@ -1,6 +1,5 @@
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 # Common generic tests
 SET(OBJECTDETECTION_TESTS1 ${CXX_TEST_PATH}/otbObjectDetectionTests1)
diff --git a/Testing/Code/Projections/CMakeLists.txt b/Testing/Code/Projections/CMakeLists.txt
index dcdea846c54b52032d57b70cf7c2b1720e3347f0..dc0af32a6facc1609a8b761fa9a54213c6db3d76 100644
--- a/Testing/Code/Projections/CMakeLists.txt
+++ b/Testing/Code/Projections/CMakeLists.txt
@@ -1,6 +1,5 @@
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(PROJECTIONS_TESTS1 ${CXX_TEST_PATH}/otbProjectionsTests1)
 SET(PROJECTIONS_TESTS2 ${CXX_TEST_PATH}/otbProjectionsTests2)
diff --git a/Testing/Code/Radiometry/CMakeLists.txt b/Testing/Code/Radiometry/CMakeLists.txt
index 7f817ad227dd5eca5e6e06c1f476570c1650a601..b234313ecbb4c94c197771eb14c81e95dc518f54 100644
--- a/Testing/Code/Radiometry/CMakeLists.txt
+++ b/Testing/Code/Radiometry/CMakeLists.txt
@@ -1,7 +1,6 @@
 
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(RADIOMETRY_TESTS1 ${CXX_TEST_PATH}/otbRadiometryTests1)
 SET(RADIOMETRY_TESTS2 ${CXX_TEST_PATH}/otbRadiometryTests2)
diff --git a/Testing/Code/SARPolarimetry/CMakeLists.txt b/Testing/Code/SARPolarimetry/CMakeLists.txt
index a53b98cad94a857f6c65799b45e6d7f75e6bb4b4..610e4ee6c5ee81a5d57c326062d7858fa08481ba 100644
--- a/Testing/Code/SARPolarimetry/CMakeLists.txt
+++ b/Testing/Code/SARPolarimetry/CMakeLists.txt
@@ -1,7 +1,6 @@
 
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(SARPOLARIMETRY_TESTS1 ${CXX_TEST_PATH}/otbSARPolarimetryTests1)
 SET(SARPOLARIMETRY_TESTS2 ${CXX_TEST_PATH}/otbSARPolarimetryTests2)
diff --git a/Testing/Code/Simulation/CMakeLists.txt b/Testing/Code/Simulation/CMakeLists.txt
index 3cc4bb9a3afc1344cd0757355dce452dfe49ca89..ff404abfcd6532a3cbc42abdc77f014ee670d52f 100644
--- a/Testing/Code/Simulation/CMakeLists.txt
+++ b/Testing/Code/Simulation/CMakeLists.txt
@@ -1,7 +1,6 @@
 
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(SPECTRUM_DB ${OTB_DATA_ROOT}/Input/BD-CNES)
 SET(SRCLASS0 ${SPECTRUM_DB}/JHU/becknic/manmade/txt)
diff --git a/Testing/Code/SpatialReasoning/CMakeLists.txt b/Testing/Code/SpatialReasoning/CMakeLists.txt
index ca0d193a743abc613a019a766fb541870105d85c..95d505b01cece3f9c95a039207340ef67b5fe8ff 100644
--- a/Testing/Code/SpatialReasoning/CMakeLists.txt
+++ b/Testing/Code/SpatialReasoning/CMakeLists.txt
@@ -1,7 +1,6 @@
 
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(SPATIALREASONING_TESTS1 ${CXX_TEST_PATH}/otbSpatialReasoningTests1)
 SET(SPATIALREASONING_TESTS2 ${CXX_TEST_PATH}/otbSpatialReasoningTests2)
diff --git a/Testing/Code/TestSystem/CMakeLists.txt b/Testing/Code/TestSystem/CMakeLists.txt
index 4d28b3a5d1c27688e643ebf65b6acc471ef56c94..398db65434b7fb36727afeeb45ba76afc931a793 100644
--- a/Testing/Code/TestSystem/CMakeLists.txt
+++ b/Testing/Code/TestSystem/CMakeLists.txt
@@ -1,7 +1,6 @@
 
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(TESTSYSTEM_TESTS ${CXX_TEST_PATH}/otbTestSystemTests)
 
diff --git a/Testing/Code/UtilitiesAdapters/CMakeLists.txt b/Testing/Code/UtilitiesAdapters/CMakeLists.txt
index c7f5b52f08e22209bbc01d409d664659ff3b5707..f9a4d4c329b2e9e4545eef3f263b0860065d53fa 100644
--- a/Testing/Code/UtilitiesAdapters/CMakeLists.txt
+++ b/Testing/Code/UtilitiesAdapters/CMakeLists.txt
@@ -1,6 +1,5 @@
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(UtilitiesAdapters_TESTS1 ${CXX_TEST_PATH}/otbUtilitiesAdaptersTests1)
 
diff --git a/Testing/Code/Visu/CMakeLists.txt b/Testing/Code/Visu/CMakeLists.txt
index adbb132b31b7ddf86b0764b3ed54a8855cea3372..2566518b0459c0b072626c81c181f1384596921d 100644
--- a/Testing/Code/Visu/CMakeLists.txt
+++ b/Testing/Code/Visu/CMakeLists.txt
@@ -1,6 +1,5 @@
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 SET(VISU_TESTS1 ${CXX_TEST_PATH}/otbVisuTests1)
 SET(VISU_TESTS2 ${CXX_TEST_PATH}/otbVisuTests2)
diff --git a/Testing/Code/Visualization/CMakeLists.txt b/Testing/Code/Visualization/CMakeLists.txt
index 229b6d013c5e2cdf5c28cd451c64ea2c1720a433..aec29366d0e60594af21ee32be2e5d221f295c40 100644
--- a/Testing/Code/Visualization/CMakeLists.txt
+++ b/Testing/Code/Visualization/CMakeLists.txt
@@ -1,6 +1,5 @@
 IF( NOT OTB_DISABLE_CXX_TESTING AND BUILD_TESTING )
 
-INCLUDE(TestingHelper)
 
 # Test programs
 SET(VISUALIZATION_TESTS1 ${CXX_TEST_PATH}/otbVisualizationTests1)
diff --git a/Testing/Code/Wrappers/CommandLine/CMakeLists.txt b/Testing/Code/Wrappers/CommandLine/CMakeLists.txt
index 9cd662b0845fe0273067313d496f72ba000d9303..a2367115466b75c72e43d42c385ebab56587591f 100644
--- a/Testing/Code/Wrappers/CommandLine/CMakeLists.txt
+++ b/Testing/Code/Wrappers/CommandLine/CMakeLists.txt
@@ -1,4 +1,3 @@
-INCLUDE(TestingHelper)
 
 SET(APPLICATIONSPATH ${OTB_BINARY_DIR}/bin)
 
diff --git a/Testing/Code/Wrappers/Java/CMakeLists.txt b/Testing/Code/Wrappers/Java/CMakeLists.txt
index d1ce94d6d7b56d4a705a442aa016d9296ac471f4..fd291daa18ffcc6d67ae73ffe87c792e00264f05 100644
--- a/Testing/Code/Wrappers/Java/CMakeLists.txt
+++ b/Testing/Code/Wrappers/Java/CMakeLists.txt
@@ -1,6 +1,5 @@
 include( UseJava )
 
-INCLUDE(TestingHelper)
 
 set(TEST_DRIVER otbTestDriver
     --add-before-env ITK_AUTOLOAD_PATH $<TARGET_FILE_DIR:otbapp_Smoothing>
diff --git a/Testing/Code/Wrappers/Python/CMakeLists.txt b/Testing/Code/Wrappers/Python/CMakeLists.txt
index a584ca416967f108af31148d3067c60d1ea1ef05..feb5cbadd9d82a6251f6e848cc18999e6342c1c8 100644
--- a/Testing/Code/Wrappers/Python/CMakeLists.txt
+++ b/Testing/Code/Wrappers/Python/CMakeLists.txt
@@ -1,4 +1,3 @@
-INCLUDE(TestingHelper)
 
 set(TEST_DRIVER otbTestDriver
     --add-before-env PYTHONPATH        "${CMAKE_BINARY_DIR}/Code/Wrappers/SWIG"
diff --git a/CMake/TestingHelper.cmake b/Testing/TestingHelper.cmake
similarity index 100%
rename from CMake/TestingHelper.cmake
rename to Testing/TestingHelper.cmake