diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index ecdff7f..0979d55 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -49,8 +49,8 @@
 
     set(CaffeAlexNet-Armnn_sources
         CaffeAlexNet-Armnn/CaffeAlexNet-Armnn.cpp
-        ImageNetDatabase.hpp
-        ImageNetDatabase.cpp)
+        CaffePreprocessor.hpp
+        CaffePreprocessor.cpp)
     CaffeParserTest(CaffeAlexNet-Armnn "${CaffeAlexNet-Armnn_sources}")
 
     set(MultipleNetworksCifar10_SRC
@@ -61,20 +61,20 @@
 
     set(CaffeResNet-Armnn_sources
         CaffeResNet-Armnn/CaffeResNet-Armnn.cpp
-        ImageNetDatabase.hpp
-        ImageNetDatabase.cpp)
+        CaffePreprocessor.hpp
+        CaffePreprocessor.cpp)
     CaffeParserTest(CaffeResNet-Armnn "${CaffeResNet-Armnn_sources}")
 
     set(CaffeVGG-Armnn_sources
         CaffeVGG-Armnn/CaffeVGG-Armnn.cpp
-        ImageNetDatabase.hpp
-        ImageNetDatabase.cpp)
+        CaffePreprocessor.hpp
+        CaffePreprocessor.cpp)
     CaffeParserTest(CaffeVGG-Armnn "${CaffeVGG-Armnn_sources}")
 
     set(CaffeInception_BN-Armnn_sources
         CaffeInception_BN-Armnn/CaffeInception_BN-Armnn.cpp
-        ImageNetDatabase.hpp
-        ImageNetDatabase.cpp)
+        CaffePreprocessor.hpp
+        CaffePreprocessor.cpp)
     CaffeParserTest(CaffeInception_BN-Armnn "${CaffeInception_BN-Armnn_sources}")
 
     set(CaffeYolo-Armnn_sources
@@ -118,29 +118,88 @@
 
     set(TfMobileNet-Armnn_sources
         TfMobileNet-Armnn/TfMobileNet-Armnn.cpp
-        MobileNetDatabase.hpp
-        MobileNetDatabase.cpp)
+        ImagePreprocessor.hpp
+        ImagePreprocessor.cpp)
     TfParserTest(TfMobileNet-Armnn "${TfMobileNet-Armnn_sources}")
 
     set(TfInceptionV3-Armnn_sources
         TfInceptionV3-Armnn/TfInceptionV3-Armnn.cpp
-        MobileNetDatabase.hpp
-        MobileNetDatabase.cpp)
+        ImagePreprocessor.hpp
+        ImagePreprocessor.cpp)
     TfParserTest(TfInceptionV3-Armnn "${TfInceptionV3-Armnn_sources}")
 
     set(TfResNext-Armnn_sources
         TfResNext_Quantized-Armnn/TfResNext_Quantized-Armnn.cpp
-        ImageNetDatabase.hpp
-        ImageNetDatabase.cpp)
+        CaffePreprocessor.hpp
+        CaffePreprocessor.cpp)
     TfParserTest(TfResNext-Armnn "${TfResNext-Armnn_sources}")
 endif()
 
-if (BUILD_CAFFE_PARSER OR BUILD_TF_PARSER)
+if (BUILD_TF_LITE_PARSER)
+    macro(TfLiteParserTest testName sources)
+        add_executable_ex(${testName} ${sources})
+        target_include_directories(${testName} PRIVATE ../src/armnnUtils)
+
+        target_link_libraries(${testName} inferenceTest)
+        target_link_libraries(${testName} armnnTfLiteParser)
+        target_link_libraries(${testName} armnn)
+        target_link_libraries(${testName} ${CMAKE_THREAD_LIBS_INIT})
+        if(OPENCL_LIBRARIES)
+            target_link_libraries(${testName} ${OPENCL_LIBRARIES})
+        endif()
+        target_link_libraries(${testName}
+            ${Boost_SYSTEM_LIBRARY}
+            ${Boost_FILESYSTEM_LIBRARY}
+            ${Boost_PROGRAM_OPTIONS_LIBRARY})
+        addDllCopyCommands(${testName})
+    endmacro()
+
+    set(TfLiteMobilenetQuantized-Armnn_sources
+        TfLiteMobilenetQuantized-Armnn/TfLiteMobilenetQuantized-Armnn.cpp
+        ImagePreprocessor.hpp
+        ImagePreprocessor.cpp)
+    TfLiteParserTest(TfLiteMobilenetQuantized-Armnn "${TfLiteMobilenetQuantized-Armnn_sources}")
+endif()
+
+if (BUILD_ONNX_PARSER)
+    macro(OnnxParserTest testName sources)
+        add_executable_ex(${testName} ${sources})
+        target_include_directories(${testName} PRIVATE ../src/armnnUtils)
+
+        target_link_libraries(${testName} inferenceTest)
+        target_link_libraries(${testName} armnnOnnxParser)
+        target_link_libraries(${testName} armnn)
+        target_link_libraries(${testName} ${CMAKE_THREAD_LIBS_INIT})
+        if(OPENCL_LIBRARIES)
+            target_link_libraries(${testName} ${OPENCL_LIBRARIES})
+        endif()
+        target_link_libraries(${testName}
+            ${Boost_SYSTEM_LIBRARY}
+            ${Boost_FILESYSTEM_LIBRARY}
+            ${Boost_PROGRAM_OPTIONS_LIBRARY})
+        addDllCopyCommands(${testName})
+    endmacro()
+
+    set(OnnxMnist-Armnn_sources
+        OnnxMnist-Armnn/OnnxMnist-Armnn.cpp
+        MnistDatabase.hpp
+        MnistDatabase.cpp)
+    OnnxParserTest(OnnxMnist-Armnn "${OnnxMnist-Armnn_sources}")
+
+    set(OnnxMobileNet-Armnn_sources
+        OnnxMobileNet-Armnn/OnnxMobileNet-Armnn.cpp
+        ImagePreprocessor.hpp
+        ImagePreprocessor.cpp)
+    OnnxParserTest(OnnxMobileNet-Armnn "${OnnxMobileNet-Armnn_sources}")
+endif()
+
+if (BUILD_CAFFE_PARSER OR BUILD_TF_PARSER OR BUILD_TF_LITE_PARSER OR BUILD_ONNX_PARSER)
     set(ExecuteNetwork_sources
         ExecuteNetwork/ExecuteNetwork.cpp)
 
     add_executable_ex(ExecuteNetwork ${ExecuteNetwork_sources})
     target_include_directories(ExecuteNetwork PRIVATE ../src/armnnUtils)
+    target_include_directories(ExecuteNetwork PRIVATE ../src/armnn)
 
     if (BUILD_CAFFE_PARSER)
         target_link_libraries(ExecuteNetwork armnnCaffeParser)
@@ -148,6 +207,14 @@
     if (BUILD_TF_PARSER)
         target_link_libraries(ExecuteNetwork armnnTfParser)
     endif()
+
+    if (BUILD_TF_LITE_PARSER)
+        target_link_libraries(ExecuteNetwork armnnTfLiteParser)
+    endif()
+    if (BUILD_ONNX_PARSER)
+            target_link_libraries(ExecuteNetwork armnnOnnxParser)
+    endif()
+
     target_link_libraries(ExecuteNetwork armnn)
     target_link_libraries(ExecuteNetwork ${CMAKE_THREAD_LIBS_INIT})
     if(OPENCL_LIBRARIES)
