diff --git a/src/armnn/test/CreateWorkload.hpp b/src/armnn/test/CreateWorkload.hpp
index ada6027..fed9dd6 100644
--- a/src/armnn/test/CreateWorkload.hpp
+++ b/src/armnn/test/CreateWorkload.hpp
@@ -9,6 +9,7 @@
 #include <boost/cast.hpp>
 
 #include <backends/WorkloadData.hpp>
+#include <backends/WorkloadFactory.hpp>
 #include <backends/CpuTensorHandle.hpp>
 
 #include <Graph.hpp>
diff --git a/src/armnn/test/CreateWorkloadClNeon.hpp b/src/armnn/test/CreateWorkloadClNeon.hpp
index a18e85d..56de085 100644
--- a/src/armnn/test/CreateWorkloadClNeon.hpp
+++ b/src/armnn/test/CreateWorkloadClNeon.hpp
@@ -5,6 +5,8 @@
 #pragma once
 
 #include "CreateWorkload.hpp"
+
+#include <backends/MemCopyWorkload.hpp>
 #include <backends/reference/RefWorkloadFactory.hpp>
 
 #if ARMCOMPUTECL_ENABLED
diff --git a/src/armnn/test/JsonPrinterTests.cpp b/src/armnn/test/JsonPrinterTests.cpp
index 9c24fda..44609ea 100644
--- a/src/armnn/test/JsonPrinterTests.cpp
+++ b/src/armnn/test/JsonPrinterTests.cpp
@@ -14,7 +14,7 @@
 #include <armnn/Descriptors.hpp>
 #include <armnn/IRuntime.hpp>
 #include <armnn/INetwork.hpp>
-#include <backends/test/ClContextControlFixture.hpp>
+#include <backends/cl/test/ClContextControlFixture.hpp>
 #include <backends/cl/ClWorkloadFactory.hpp>
 
 BOOST_FIXTURE_TEST_SUITE(JsonPrinterTests, ClProfilingContextControlFixture)
diff --git a/src/backends/cl/CMakeLists.txt b/src/backends/cl/CMakeLists.txt
index a7ce893..04da6dd 100644
--- a/src/backends/cl/CMakeLists.txt
+++ b/src/backends/cl/CMakeLists.txt
@@ -15,7 +15,8 @@
 )
 
 if(ARMCOMPUTECL)
-    add_subdirectory(workloads test)
+    add_subdirectory(workloads)
+    add_subdirectory(test)
 endif()
 
 add_library(armnnClBackend STATIC ${armnnClBackend_sources})
diff --git a/src/backends/cl/backend.cmake b/src/backends/cl/backend.cmake
index 1af88e3..f8a1c1c 100644
--- a/src/backends/cl/backend.cmake
+++ b/src/backends/cl/backend.cmake
@@ -6,6 +6,7 @@
 if(ARMCOMPUTECL)
     add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/cl)
     list(APPEND armnnLibraries armnnClBackend armnnClBackendWorkloads)
+    list(APPEND armnnUnitTestLibraries armnnClBackendUnitTests)
 else()
     message("CL backend is disabled")
     add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/cl)
diff --git a/src/backends/cl/test/CMakeLists.txt b/src/backends/cl/test/CMakeLists.txt
index e69de29..795a7dc 100644
--- a/src/backends/cl/test/CMakeLists.txt
+++ b/src/backends/cl/test/CMakeLists.txt
@@ -0,0 +1,16 @@
+#
+# Copyright © 2017 Arm Ltd. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
+list(APPEND armnnClBackendUnitTests_sources
+    ClContextControlFixture.hpp
+    ClCreateWorkloadTests.cpp
+    ClLayerSupportTests.cpp
+    ClLayerTests.cpp
+)
+
+add_library(armnnClBackendUnitTests STATIC ${armnnClBackendUnitTests_sources})
+target_include_directories(armnnClBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src)
+target_include_directories(armnnClBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
+target_include_directories(armnnClBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
\ No newline at end of file
diff --git a/src/backends/test/ClContextControlFixture.hpp b/src/backends/cl/test/ClContextControlFixture.hpp
similarity index 100%
rename from src/backends/test/ClContextControlFixture.hpp
rename to src/backends/cl/test/ClContextControlFixture.hpp
diff --git a/src/backends/test/CreateWorkloadCl.cpp b/src/backends/cl/test/ClCreateWorkloadTests.cpp
similarity index 99%
rename from src/backends/test/CreateWorkloadCl.cpp
rename to src/backends/cl/test/ClCreateWorkloadTests.cpp
index d56bad2..659ba82 100644
--- a/src/backends/test/CreateWorkloadCl.cpp
+++ b/src/backends/cl/test/ClCreateWorkloadTests.cpp
@@ -2,14 +2,16 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
-#include <backends/cl/ClWorkloadFactory.hpp>
-#include <backends/reference/RefWorkloadFactory.hpp>
-#include <backends/MemCopyWorkload.hpp>
-#include <backends/cl/workloads/ClWorkloadUtils.hpp>
-#include <backends/cl/workloads/ClWorkloads.hpp>
-#include <backends/cl/ClTensorHandle.hpp>
+
 #include "ClContextControlFixture.hpp"
 
+#include <backends/MemCopyWorkload.hpp>
+#include <backends/cl/ClTensorHandle.hpp>
+#include <backends/cl/ClWorkloadFactory.hpp>
+#include <backends/cl/workloads/ClWorkloads.hpp>
+#include <backends/cl/workloads/ClWorkloadUtils.hpp>
+#include <backends/reference/RefWorkloadFactory.hpp>
+
 #include <test/CreateWorkloadClNeon.hpp>
 
 boost::test_tools::predicate_result CompareIClTensorHandleShape(IClTensorHandle*                    tensorHandle,
diff --git a/src/backends/cl/test/ClLayerSupportTests.cpp b/src/backends/cl/test/ClLayerSupportTests.cpp
new file mode 100644
index 0000000..513366e
--- /dev/null
+++ b/src/backends/cl/test/ClLayerSupportTests.cpp
@@ -0,0 +1,104 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include <armnn/layers/ConvertFp16ToFp32Layer.hpp>
+#include <armnn/layers/ConvertFp32ToFp16Layer.hpp>
+#include <armnn/test/TensorHelpers.hpp>
+
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/cl/ClWorkloadFactory.hpp>
+#include <backends/cl/test/ClContextControlFixture.hpp>
+#include <backends/test/IsLayerSupportedTestImpl.hpp>
+#include <backends/test/LayerTests.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include <string>
+
+BOOST_AUTO_TEST_SUITE(ClLayerSupport)
+
+BOOST_FIXTURE_TEST_CASE(IsLayerSupportedFloat16Cl, ClContextControlFixture)
+{
+    armnn::ClWorkloadFactory factory;
+    IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::Float16>(&factory);
+}
+
+BOOST_FIXTURE_TEST_CASE(IsLayerSupportedFloat32Cl, ClContextControlFixture)
+{
+    armnn::ClWorkloadFactory factory;
+    IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::Float32>(&factory);
+}
+
+BOOST_FIXTURE_TEST_CASE(IsLayerSupportedUint8Cl, ClContextControlFixture)
+{
+    armnn::ClWorkloadFactory factory;
+    IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::QuantisedAsymm8>(&factory);
+}
+
+BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedCl, ClContextControlFixture)
+{
+    std::string reasonIfUnsupported;
+
+    bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
+      armnn::DataType::Float16, armnn::DataType::Float32>(reasonIfUnsupported);
+
+    BOOST_CHECK(result);
+}
+
+BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedFp32InputCl, ClContextControlFixture)
+{
+    std::string reasonIfUnsupported;
+
+    bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
+      armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
+
+    BOOST_CHECK(!result);
+    BOOST_CHECK_EQUAL(reasonIfUnsupported, "Input should be Float16");
+}
+
+BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedFp16OutputCl, ClContextControlFixture)
+{
+    std::string reasonIfUnsupported;
+
+    bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
+      armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported);
+
+    BOOST_CHECK(!result);
+    BOOST_CHECK_EQUAL(reasonIfUnsupported, "Output should be Float32");
+}
+
+BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedCl, ClContextControlFixture)
+{
+    std::string reasonIfUnsupported;
+
+    bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
+      armnn::DataType::Float32, armnn::DataType::Float16>(reasonIfUnsupported);
+
+    BOOST_CHECK(result);
+}
+
+BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedFp16InputCl, ClContextControlFixture)
+{
+    std::string reasonIfUnsupported;
+
+    bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
+      armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported);
+
+    BOOST_CHECK(!result);
+    BOOST_CHECK_EQUAL(reasonIfUnsupported, "Input should be Float32");
+}
+
+BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedFp32OutputCl, ClContextControlFixture)
+{
+    std::string reasonIfUnsupported;
+
+    bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
+      armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
+
+    BOOST_CHECK(!result);
+    BOOST_CHECK_EQUAL(reasonIfUnsupported, "Output should be Float16");
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/backends/test/ArmComputeCl.cpp b/src/backends/cl/test/ClLayerTests.cpp
similarity index 98%
rename from src/backends/test/ArmComputeCl.cpp
rename to src/backends/cl/test/ClLayerTests.cpp
index f4ead34..ab63ba4 100644
--- a/src/backends/test/ArmComputeCl.cpp
+++ b/src/backends/cl/test/ClLayerTests.cpp
@@ -2,24 +2,27 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
-#include <boost/test/unit_test.hpp>
+
+#include "ClContextControlFixture.hpp"
+
 #include "test/TensorHelpers.hpp"
-#include "LayerTests.hpp"
+#include "test/UnitTests.hpp"
 
 #include <backends/CpuTensorHandle.hpp>
+#include <backends/cl/ClLayerSupport.hpp>
 #include <backends/cl/ClWorkloadFactory.hpp>
 #include <backends/cl/workloads/ClWorkloadUtils.hpp>
 #include <backends/reference/RefWorkloadFactory.hpp>
-#include <backends/cl/ClLayerSupport.hpp>
-#include "ActivationFixture.hpp"
-#include "ClContextControlFixture.hpp"
+#include <backends/test/ActivationFixture.hpp>
+#include <backends/test/LayerTests.hpp>
 
 #include <arm_compute/core/CL/CLKernelLibrary.h>
 #include <arm_compute/runtime/CL/CLScheduler.h>
-#include <string>
-#include <iostream>
 
-#include "test/UnitTests.hpp"
+#include <boost/test/unit_test.hpp>
+
+#include <iostream>
+#include <string>
 
 BOOST_FIXTURE_TEST_SUITE(Compute_ArmComputeCl, ClContextControlFixture)
 using FactoryType = armnn::ClWorkloadFactory;
diff --git a/src/backends/neon/CMakeLists.txt b/src/backends/neon/CMakeLists.txt
index c6492bc..93c7955 100644
--- a/src/backends/neon/CMakeLists.txt
+++ b/src/backends/neon/CMakeLists.txt
@@ -14,7 +14,8 @@
         NeonTensorHandle.hpp
     )
 
-    add_subdirectory(workloads test)
+    add_subdirectory(workloads)
+    add_subdirectory(test)
 else()
     list(APPEND armnnNeonBackend_sources
         NeonLayerSupport.cpp
diff --git a/src/backends/neon/backend.cmake b/src/backends/neon/backend.cmake
index 5f02c84..0240d52 100644
--- a/src/backends/neon/backend.cmake
+++ b/src/backends/neon/backend.cmake
@@ -6,6 +6,7 @@
 if(ARMCOMPUTENEON)
     add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/neon)
     list(APPEND armnnLibraries armnnNeonBackend armnnNeonBackendWorkloads)
+    list(APPEND armnnUnitTestLibraries armnnNeonBackendUnitTests)
 else()
     message("NEON backend is disabled")
     add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/neon)
diff --git a/src/backends/neon/test/CMakeLists.txt b/src/backends/neon/test/CMakeLists.txt
index f41a074..82156f3 100644
--- a/src/backends/neon/test/CMakeLists.txt
+++ b/src/backends/neon/test/CMakeLists.txt
@@ -2,3 +2,14 @@
 # Copyright © 2017 Arm Ltd. All rights reserved.
 # SPDX-License-Identifier: MIT
 #
+
+list(APPEND armnnNeonBackendUnitTests_sources
+    NeonCreateWorkloadTests.cpp
+    NeonLayerSupportTests.cpp
+    NeonLayerTests.cpp
+)
+
+add_library(armnnNeonBackendUnitTests STATIC ${armnnNeonBackendUnitTests_sources})
+target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src)
+target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
+target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
\ No newline at end of file
diff --git a/src/backends/test/CreateWorkloadNeon.cpp b/src/backends/neon/test/NeonCreateWorkloadTests.cpp
similarity index 99%
rename from src/backends/test/CreateWorkloadNeon.cpp
rename to src/backends/neon/test/NeonCreateWorkloadTests.cpp
index b2ec563..d1a5b2a 100644
--- a/src/backends/test/CreateWorkloadNeon.cpp
+++ b/src/backends/neon/test/NeonCreateWorkloadTests.cpp
@@ -2,13 +2,14 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
+
+#include <armnn/test/CreateWorkloadClNeon.hpp>
+
+#include <backends/MemCopyWorkload.hpp>
 #include <backends/neon/NeonWorkloadFactory.hpp>
 #include <backends/neon/NeonTensorHandle.hpp>
 #include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 #include <backends/neon/workloads/NeonWorkloads.hpp>
-#include <backends/MemCopyWorkload.hpp>
-
-#include "test/CreateWorkloadClNeon.hpp"
 
 BOOST_AUTO_TEST_SUITE(CreateWorkloadNeon)
 
diff --git a/src/backends/neon/test/NeonLayerSupportTests.cpp b/src/backends/neon/test/NeonLayerSupportTests.cpp
new file mode 100644
index 0000000..db7897f
--- /dev/null
+++ b/src/backends/neon/test/NeonLayerSupportTests.cpp
@@ -0,0 +1,59 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include <armnn/layers/ConvertFp16ToFp32Layer.hpp>
+#include <armnn/layers/ConvertFp32ToFp16Layer.hpp>
+#include <armnn/test/TensorHelpers.hpp>
+
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/neon/NeonWorkloadFactory.hpp>
+#include <backends/test/IsLayerSupportedTestImpl.hpp>
+#include <backends/test/LayerTests.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include <string>
+
+BOOST_AUTO_TEST_SUITE(NeonLayerSupport)
+
+BOOST_AUTO_TEST_CASE(IsLayerSupportedFloat16Neon)
+{
+    armnn::NeonWorkloadFactory factory;
+    IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::Float16>(&factory);
+}
+
+BOOST_AUTO_TEST_CASE(IsLayerSupportedFloat32Neon)
+{
+    armnn::NeonWorkloadFactory factory;
+    IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::Float32>(&factory);
+}
+
+BOOST_AUTO_TEST_CASE(IsLayerSupportedUint8Neon)
+{
+    armnn::NeonWorkloadFactory factory;
+    IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::QuantisedAsymm8>(&factory);
+}
+
+BOOST_AUTO_TEST_CASE(IsConvertFp16ToFp32SupportedNeon)
+{
+    std::string reasonIfUnsupported;
+
+    bool result = IsConvertLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
+      armnn::DataType::Float16, armnn::DataType::Float32>(reasonIfUnsupported);
+
+    BOOST_CHECK(result);
+}
+
+BOOST_AUTO_TEST_CASE(IsConvertFp32ToFp16SupportedNeon)
+{
+    std::string reasonIfUnsupported;
+
+    bool result = IsConvertLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
+      armnn::DataType::Float32, armnn::DataType::Float16>(reasonIfUnsupported);
+
+    BOOST_CHECK(result);
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/backends/test/ArmComputeNeon.cpp b/src/backends/neon/test/NeonLayerTests.cpp
similarity index 98%
rename from src/backends/test/ArmComputeNeon.cpp
rename to src/backends/neon/test/NeonLayerTests.cpp
index 045aa30..2d4ee99 100644
--- a/src/backends/test/ArmComputeNeon.cpp
+++ b/src/backends/neon/test/NeonLayerTests.cpp
@@ -2,21 +2,20 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
-#include <boost/test/unit_test.hpp>
 
-#include "test/TensorHelpers.hpp"
-#include "LayerTests.hpp"
+#include <armnn/test/TensorHelpers.hpp>
+#include <armnn/test/UnitTests.hpp>
 
 #include <backends/CpuTensorHandle.hpp>
 #include <backends/neon/NeonLayerSupport.hpp>
 #include <backends/neon/NeonWorkloadFactory.hpp>
 #include <backends/reference/RefWorkloadFactory.hpp>
+#include <backends/test/ActivationFixture.hpp>
+#include <backends/test/LayerTests.hpp>
 #include <backends/test/TensorCopyUtils.hpp>
-#include "ActivationFixture.hpp"
+#include <backends/test/WorkloadTestUtils.hpp>
 
-#include "WorkloadTestUtils.hpp"
-
-#include "test/UnitTests.hpp"
+#include <boost/test/unit_test.hpp>
 
 BOOST_AUTO_TEST_SUITE(Compute_ArmComputeNeon)
 using FactoryType = armnn::NeonWorkloadFactory;
diff --git a/src/backends/reference/CMakeLists.txt b/src/backends/reference/CMakeLists.txt
index 9810cf8..5aa3fc2 100644
--- a/src/backends/reference/CMakeLists.txt
+++ b/src/backends/reference/CMakeLists.txt
@@ -17,5 +17,5 @@
 target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
 target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
 
-add_subdirectory(workloads test)
-
+add_subdirectory(workloads)
+add_subdirectory(test)
diff --git a/src/backends/reference/backend.cmake b/src/backends/reference/backend.cmake
index 95e72a4..5ae088a 100644
--- a/src/backends/reference/backend.cmake
+++ b/src/backends/reference/backend.cmake
@@ -5,3 +5,4 @@
 
 add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/reference)
 list(APPEND armnnLibraries armnnRefBackend armnnRefBackendWorkloads)
+list(APPEND armnnUnitTestLibraries armnnRefBackendUnitTests)
diff --git a/src/backends/reference/test/CMakeLists.txt b/src/backends/reference/test/CMakeLists.txt
index f41a074..8f86f86 100644
--- a/src/backends/reference/test/CMakeLists.txt
+++ b/src/backends/reference/test/CMakeLists.txt
@@ -2,3 +2,14 @@
 # Copyright © 2017 Arm Ltd. All rights reserved.
 # SPDX-License-Identifier: MIT
 #
+
+list(APPEND armnnRefBackendUnitTests_sources
+    RefCreateWorkloadTests.cpp
+    RefLayerSupportTests.cpp
+    RefLayerTests.cpp
+)
+
+add_library(armnnRefBackendUnitTests STATIC ${armnnRefBackendUnitTests_sources})
+target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src)
+target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
+target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
\ No newline at end of file
diff --git a/src/backends/test/CreateWorkloadRef.cpp b/src/backends/reference/test/RefCreateWorkloadTests.cpp
similarity index 99%
rename from src/backends/test/CreateWorkloadRef.cpp
rename to src/backends/reference/test/RefCreateWorkloadTests.cpp
index c30093d..e88fbed 100644
--- a/src/backends/test/CreateWorkloadRef.cpp
+++ b/src/backends/reference/test/RefCreateWorkloadTests.cpp
@@ -2,11 +2,12 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
+
+#include <armnn/test/CreateWorkload.hpp>
+
+#include <backends/CpuTensorHandle.hpp>
 #include <backends/reference/RefWorkloadFactory.hpp>
 #include <backends/reference/workloads/RefWorkloads.hpp>
-#include <backends/CpuTensorHandle.hpp>
-
-#include "test/CreateWorkload.hpp"
 
 namespace
 {
diff --git a/src/backends/reference/test/RefLayerSupportTests.cpp b/src/backends/reference/test/RefLayerSupportTests.cpp
new file mode 100644
index 0000000..be3f3f8
--- /dev/null
+++ b/src/backends/reference/test/RefLayerSupportTests.cpp
@@ -0,0 +1,118 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include <armnn/layers/ConvertFp16ToFp32Layer.hpp>
+#include <armnn/layers/ConvertFp32ToFp16Layer.hpp>
+#include <armnn/test/TensorHelpers.hpp>
+
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/reference/RefWorkloadFactory.hpp>
+#include <backends/test/LayerTests.hpp>
+#include <backends/test/IsLayerSupportedTestImpl.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include <string>
+
+namespace
+{
+
+bool LayerTypeMatchesTest()
+{
+    return LayerTypeMatchesTestImpl<armnn::LayerType::FirstLayer>(Tag<armnn::LayerType::FirstLayer>());
+};
+
+} // anonymous namespace
+
+BOOST_AUTO_TEST_SUITE(RefLayerSupported)
+
+BOOST_AUTO_TEST_CASE(IsLayerSupportedLayerTypeMatches)
+{
+    LayerTypeMatchesTest();
+}
+
+BOOST_AUTO_TEST_CASE(IsLayerSupportedFloat16Reference)
+{
+    armnn::RefWorkloadFactory factory;
+    IsLayerSupportedTests<armnn::RefWorkloadFactory, armnn::DataType::Float16>(&factory);
+}
+
+BOOST_AUTO_TEST_CASE(IsLayerSupportedFloat32Reference)
+{
+    armnn::RefWorkloadFactory factory;
+    IsLayerSupportedTests<armnn::RefWorkloadFactory, armnn::DataType::Float32>(&factory);
+}
+
+BOOST_AUTO_TEST_CASE(IsLayerSupportedUint8Reference)
+{
+    armnn::RefWorkloadFactory factory;
+    IsLayerSupportedTests<armnn::RefWorkloadFactory, armnn::DataType::QuantisedAsymm8>(&factory);
+}
+
+BOOST_AUTO_TEST_CASE(IsConvertFp16ToFp32SupportedReference)
+{
+    std::string reasonIfUnsupported;
+
+    bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
+      armnn::DataType::Float16, armnn::DataType::Float32>(reasonIfUnsupported);
+
+    BOOST_CHECK(result);
+}
+
+BOOST_AUTO_TEST_CASE(IsConvertFp16ToFp32SupportedFp32InputReference)
+{
+    std::string reasonIfUnsupported;
+
+    bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
+      armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
+
+    BOOST_CHECK(!result);
+    BOOST_CHECK_EQUAL(reasonIfUnsupported, "Layer is not supported with float32 data type input");
+}
+
+BOOST_AUTO_TEST_CASE(IsConvertFp16ToFp32SupportedFp16OutputReference)
+{
+    std::string reasonIfUnsupported;
+
+    bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
+      armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported);
+
+    BOOST_CHECK(!result);
+    BOOST_CHECK_EQUAL(reasonIfUnsupported, "Layer is not supported with float16 data type output");
+}
+
+BOOST_AUTO_TEST_CASE(IsConvertFp32ToFp16SupportedReference)
+{
+    std::string reasonIfUnsupported;
+
+    bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
+      armnn::DataType::Float32, armnn::DataType::Float16>(reasonIfUnsupported);
+
+    BOOST_CHECK(result);
+}
+
+BOOST_AUTO_TEST_CASE(IsConvertFp32ToFp16SupportedFp16InputReference)
+{
+    std::string reasonIfUnsupported;
+
+    bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
+      armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported);
+
+    BOOST_CHECK(!result);
+    BOOST_CHECK_EQUAL(reasonIfUnsupported, "Layer is not supported with float16 data type input");
+}
+
+BOOST_AUTO_TEST_CASE(IsConvertFp32ToFp16SupportedFp32OutputReference)
+{
+    std::string reasonIfUnsupported;
+
+    bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
+      armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
+
+    BOOST_CHECK(!result);
+    BOOST_CHECK_EQUAL(reasonIfUnsupported, "Layer is not supported with float32 data type output");
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/backends/test/Reference.cpp b/src/backends/reference/test/RefLayerTests.cpp
similarity index 99%
rename from src/backends/test/Reference.cpp
rename to src/backends/reference/test/RefLayerTests.cpp
index 05ebf2e..de2c2fe 100644
--- a/src/backends/test/Reference.cpp
+++ b/src/backends/reference/test/RefLayerTests.cpp
@@ -2,14 +2,14 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
-#include <boost/test/unit_test.hpp>
 
-#include "LayerTests.hpp"
 #include "test/TensorHelpers.hpp"
+#include "test/UnitTests.hpp"
 
 #include <backends/reference/RefWorkloadFactory.hpp>
+#include <backends/test/LayerTests.hpp>
 
-#include "test/UnitTests.hpp"
+#include <boost/test/unit_test.hpp>
 
 BOOST_AUTO_TEST_SUITE(Compute_Reference)
 using FactoryType = armnn::RefWorkloadFactory;
diff --git a/src/backends/test/ActivationFixture.hpp b/src/backends/test/ActivationFixture.hpp
index d9d4ca7..5028b25 100644
--- a/src/backends/test/ActivationFixture.hpp
+++ b/src/backends/test/ActivationFixture.hpp
@@ -7,6 +7,11 @@
 #include "TensorCopyUtils.hpp"
 #include "WorkloadTestUtils.hpp"
 
+#include <armnn/test/TensorHelpers.hpp>
+
+#include <boost/numeric/conversion/cast.hpp>
+#include <boost/multi_array.hpp>
+
 struct ActivationFixture
 {
     ActivationFixture()
diff --git a/src/backends/test/IsLayerSupportedTest.cpp b/src/backends/test/IsLayerSupportedTest.cpp
deleted file mode 100644
index 089822d..0000000
--- a/src/backends/test/IsLayerSupportedTest.cpp
+++ /dev/null
@@ -1,239 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-#include <boost/test/unit_test.hpp>
-
-#include <test/TensorHelpers.hpp>
-#include "LayerTests.hpp"
-
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/reference/RefWorkloadFactory.hpp>
-#include <backends/neon/NeonWorkloadFactory.hpp>
-
-#include <string>
-#include <iostream>
-#include <backends/cl/ClWorkloadFactory.hpp>
-
-#include "IsLayerSupportedTestImpl.hpp"
-#include <backends/test/ClContextControlFixture.hpp>
-
-#include <layers/ConvertFp16ToFp32Layer.hpp>
-#include <layers/ConvertFp32ToFp16Layer.hpp>
-
-BOOST_AUTO_TEST_SUITE(IsLayerSupported)
-
-BOOST_AUTO_TEST_CASE(IsLayerSupportedLayerTypeMatches)
-{
-    LayerTypeMatchesTest();
-}
-
-BOOST_AUTO_TEST_CASE(IsLayerSupportedFloat16Reference)
-{
-    armnn::RefWorkloadFactory factory;
-    IsLayerSupportedTests<armnn::RefWorkloadFactory, armnn::DataType::Float16>(&factory);
-}
-
-BOOST_AUTO_TEST_CASE(IsLayerSupportedFloat32Reference)
-{
-    armnn::RefWorkloadFactory factory;
-    IsLayerSupportedTests<armnn::RefWorkloadFactory, armnn::DataType::Float32>(&factory);
-}
-
-BOOST_AUTO_TEST_CASE(IsLayerSupportedUint8Reference)
-{
-    armnn::RefWorkloadFactory factory;
-    IsLayerSupportedTests<armnn::RefWorkloadFactory, armnn::DataType::QuantisedAsymm8>(&factory);
-}
-
-BOOST_AUTO_TEST_CASE(IsConvertFp16ToFp32SupportedReference)
-{
-    std::string reasonIfUnsupported;
-
-    bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
-      armnn::DataType::Float16, armnn::DataType::Float32>(reasonIfUnsupported);
-
-    BOOST_CHECK(result);
-}
-
-BOOST_AUTO_TEST_CASE(IsConvertFp16ToFp32SupportedFp32InputReference)
-{
-    std::string reasonIfUnsupported;
-
-    bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
-      armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
-
-    BOOST_CHECK(!result);
-    BOOST_CHECK_EQUAL(reasonIfUnsupported, "Layer is not supported with float32 data type input");
-}
-
-BOOST_AUTO_TEST_CASE(IsConvertFp16ToFp32SupportedFp16OutputReference)
-{
-    std::string reasonIfUnsupported;
-
-    bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
-      armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported);
-
-    BOOST_CHECK(!result);
-    BOOST_CHECK_EQUAL(reasonIfUnsupported, "Layer is not supported with float16 data type output");
-}
-
-BOOST_AUTO_TEST_CASE(IsConvertFp32ToFp16SupportedReference)
-{
-    std::string reasonIfUnsupported;
-
-    bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
-      armnn::DataType::Float32, armnn::DataType::Float16>(reasonIfUnsupported);
-
-    BOOST_CHECK(result);
-}
-
-BOOST_AUTO_TEST_CASE(IsConvertFp32ToFp16SupportedFp16InputReference)
-{
-    std::string reasonIfUnsupported;
-
-    bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
-      armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported);
-
-    BOOST_CHECK(!result);
-    BOOST_CHECK_EQUAL(reasonIfUnsupported, "Layer is not supported with float16 data type input");
-}
-
-BOOST_AUTO_TEST_CASE(IsConvertFp32ToFp16SupportedFp32OutputReference)
-{
-    std::string reasonIfUnsupported;
-
-    bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
-      armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
-
-    BOOST_CHECK(!result);
-    BOOST_CHECK_EQUAL(reasonIfUnsupported, "Layer is not supported with float32 data type output");
-}
-
-#ifdef ARMCOMPUTENEON_ENABLED
-BOOST_AUTO_TEST_CASE(IsLayerSupportedFloat16Neon)
-{
-    armnn::NeonWorkloadFactory factory;
-    IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::Float16>(&factory);
-}
-
-BOOST_AUTO_TEST_CASE(IsLayerSupportedFloat32Neon)
-{
-    armnn::NeonWorkloadFactory factory;
-    IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::Float32>(&factory);
-}
-
-BOOST_AUTO_TEST_CASE(IsLayerSupportedUint8Neon)
-{
-    armnn::NeonWorkloadFactory factory;
-    IsLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::DataType::QuantisedAsymm8>(&factory);
-}
-
-BOOST_AUTO_TEST_CASE(IsConvertFp16ToFp32SupportedNeon)
-{
-    std::string reasonIfUnsupported;
-
-    bool result = IsConvertLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
-      armnn::DataType::Float16, armnn::DataType::Float32>(reasonIfUnsupported);
-
-    BOOST_CHECK(result);
-}
-
-BOOST_AUTO_TEST_CASE(IsConvertFp32ToFp16SupportedNeon)
-{
-    std::string reasonIfUnsupported;
-
-    bool result = IsConvertLayerSupportedTests<armnn::NeonWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
-      armnn::DataType::Float32, armnn::DataType::Float16>(reasonIfUnsupported);
-
-    BOOST_CHECK(result);
-}
-#endif //#ifdef ARMCOMPUTENEON_ENABLED.
-
-
-#ifdef ARMCOMPUTECL_ENABLED
-
-BOOST_FIXTURE_TEST_CASE(IsLayerSupportedFloat16Cl, ClContextControlFixture)
-{
-    armnn::ClWorkloadFactory factory;
-    IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::Float16>(&factory);
-}
-
-BOOST_FIXTURE_TEST_CASE(IsLayerSupportedFloat32Cl, ClContextControlFixture)
-{
-    armnn::ClWorkloadFactory factory;
-    IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::Float32>(&factory);
-}
-
-BOOST_FIXTURE_TEST_CASE(IsLayerSupportedUint8Cl, ClContextControlFixture)
-{
-    armnn::ClWorkloadFactory factory;
-    IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::QuantisedAsymm8>(&factory);
-}
-
-BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedCl, ClContextControlFixture)
-{
-    std::string reasonIfUnsupported;
-
-    bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
-      armnn::DataType::Float16, armnn::DataType::Float32>(reasonIfUnsupported);
-
-    BOOST_CHECK(result);
-}
-
-BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedFp32InputCl, ClContextControlFixture)
-{
-    std::string reasonIfUnsupported;
-
-    bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
-      armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
-
-    BOOST_CHECK(!result);
-    BOOST_CHECK_EQUAL(reasonIfUnsupported, "Input should be Float16");
-}
-
-BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedFp16OutputCl, ClContextControlFixture)
-{
-    std::string reasonIfUnsupported;
-
-    bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
-      armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported);
-
-    BOOST_CHECK(!result);
-    BOOST_CHECK_EQUAL(reasonIfUnsupported, "Output should be Float32");
-}
-
-BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedCl, ClContextControlFixture)
-{
-    std::string reasonIfUnsupported;
-
-    bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
-      armnn::DataType::Float32, armnn::DataType::Float16>(reasonIfUnsupported);
-
-    BOOST_CHECK(result);
-}
-
-BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedFp16InputCl, ClContextControlFixture)
-{
-    std::string reasonIfUnsupported;
-
-    bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
-      armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported);
-
-    BOOST_CHECK(!result);
-    BOOST_CHECK_EQUAL(reasonIfUnsupported, "Input should be Float32");
-}
-
-BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedFp32OutputCl, ClContextControlFixture)
-{
-    std::string reasonIfUnsupported;
-
-    bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
-      armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
-
-    BOOST_CHECK(!result);
-    BOOST_CHECK_EQUAL(reasonIfUnsupported, "Output should be Float16");
-}
-#endif //#ifdef ARMCOMPUTECL_ENABLED.
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/backends/test/IsLayerSupportedTestImpl.hpp b/src/backends/test/IsLayerSupportedTestImpl.hpp
index 0f31c8e..867f7f2 100644
--- a/src/backends/test/IsLayerSupportedTestImpl.hpp
+++ b/src/backends/test/IsLayerSupportedTestImpl.hpp
@@ -537,11 +537,6 @@
         LayerTypeMatchesTestImpl<NextType(Type)>(Tag<NextType(Type)>());
 };
 
-bool LayerTypeMatchesTest()
-{
-    return LayerTypeMatchesTestImpl<armnn::LayerType::FirstLayer>(Tag<armnn::LayerType::FirstLayer>());
-};
-
 template<typename FactoryType, typename LayerType, armnn::DataType InputDataType , armnn::DataType OutputDataType>
 bool IsConvertLayerSupportedTests(std::string& reasonIfUnsupported)
 {
diff --git a/src/backends/test/LayerTests.cpp b/src/backends/test/LayerTests.cpp
index 17f3ae1..d88db06 100644
--- a/src/backends/test/LayerTests.cpp
+++ b/src/backends/test/LayerTests.cpp
@@ -39,7 +39,7 @@
 #include "ConvertFp16ToFp32TestImpl.hpp"
 #include "ConvertFp32ToFp16TestImpl.hpp"
 
-#include "ClContextControlFixture.hpp"
+#include <backends/cl/test/ClContextControlFixture.hpp>
 
 // 3-channel 16x8 image used as common input data for a number of Conv2d tests.
 static std::vector<float> ConvInput3x8x16({
