diff --git a/src/armnnSerializer/test/ActivationSerializationTests.cpp b/src/armnnSerializer/test/ActivationSerializationTests.cpp
index 2a46045..34e99f6 100644
--- a/src/armnnSerializer/test/ActivationSerializationTests.cpp
+++ b/src/armnnSerializer/test/ActivationSerializationTests.cpp
@@ -8,6 +8,8 @@
 #include <armnn/INetwork.hpp>
 #include "../Serializer.hpp"
 #include <sstream>
+
+#include <boost/core/ignore_unused.hpp>
 #include <boost/test/unit_test.hpp>
 
 BOOST_AUTO_TEST_SUITE(SerializerTests)
@@ -19,6 +21,7 @@
                               const armnn::ActivationDescriptor& activationDescriptor,
                               const char* name) override
     {
+        boost::ignore_unused(layer, activationDescriptor);
         BOOST_TEST(name == "activation");
     }
 };
diff --git a/src/armnnSerializer/test/SerializerTests.cpp b/src/armnnSerializer/test/SerializerTests.cpp
index 4260669..8dfca3c 100644
--- a/src/armnnSerializer/test/SerializerTests.cpp
+++ b/src/armnnSerializer/test/SerializerTests.cpp
@@ -56,7 +56,7 @@
 
 struct DefaultLayerVerifierPolicy
 {
-    static void Apply(const std::string s = "")
+    static void Apply(const std::string)
     {
         BOOST_TEST_MESSAGE("Unexpected layer found in network");
         BOOST_TEST(false);
@@ -75,7 +75,7 @@
 
     void VisitInputLayer(const armnn::IConnectableLayer*, armnn::LayerBindingId, const char*) override {}
 
-    void VisitOutputLayer(const armnn::IConnectableLayer*, armnn::LayerBindingId id, const char*) override {}
+    void VisitOutputLayer(const armnn::IConnectableLayer*, armnn::LayerBindingId, const char*) override {}
 
 protected:
     void VerifyNameAndConnections(const armnn::IConnectableLayer* layer, const char* name)
@@ -521,7 +521,7 @@
             CompareConstTensor(input, m_LayerInput);
         }
 
-        void VisitAdditionLayer(const armnn::IConnectableLayer* layer, const char* name = nullptr) override {}
+        void VisitAdditionLayer(const armnn::IConnectableLayer*, const char*) override {}
 
     private:
         armnn::ConstTensor m_LayerInput;
@@ -927,7 +927,7 @@
         BOOST_CHECK(descriptor.m_Operation == armnn::ComparisonOperation::Equal);
     }
 
-    void VisitEqualLayer(const armnn::IConnectableLayer* layer, const char* name) override
+    void VisitEqualLayer(const armnn::IConnectableLayer*, const char*) override
     {
         throw armnn::Exception("EqualLayer should have translated to ComparisonLayer");
     }
@@ -1146,9 +1146,9 @@
             VerifyNameAndConnections(layer, name);
         }
 
-        void VisitConstantLayer(const armnn::IConnectableLayer* layer,
-                                const armnn::ConstTensor& input,
-                                const char *name) override {}
+        void VisitConstantLayer(const armnn::IConnectableLayer*,
+                                const armnn::ConstTensor&,
+                                const char*) override {}
     };
 
     const std::string layerName("gather");
@@ -1201,7 +1201,7 @@
         BOOST_CHECK(descriptor.m_Operation == armnn::ComparisonOperation::Greater);
     }
 
-    void VisitGreaterLayer(const armnn::IConnectableLayer* layer, const char* name) override
+    void VisitGreaterLayer(const armnn::IConnectableLayer*, const char*) override
     {
         throw armnn::Exception("GreaterLayer should have translated to ComparisonLayer");
     }
@@ -1543,9 +1543,9 @@
                         const armnn::OriginsDescriptor& descriptor)
         : LayerVerifierBaseWithDescriptor<armnn::OriginsDescriptor>(layerName, inputInfos, outputInfos, descriptor) {}
 
-    void VisitMergerLayer(const armnn::IConnectableLayer* layer,
-                          const armnn::OriginsDescriptor& descriptor,
-                          const char* name) override
+    void VisitMergerLayer(const armnn::IConnectableLayer*,
+                          const armnn::OriginsDescriptor&,
+                          const char*) override
     {
         throw armnn::Exception("MergerLayer should have translated to ConcatLayer");
     }
@@ -2514,9 +2514,9 @@
             VerifyNameAndConnections(layer, name);
         }
 
-        void VisitConstantLayer(const armnn::IConnectableLayer* layer,
-                                const armnn::ConstTensor& input,
-                                const char *name) override {}
+        void VisitConstantLayer(const armnn::IConnectableLayer*,
+                                const armnn::ConstTensor&,
+                                const char*) override {}
     };
 
     const std::string layerName("switch");
@@ -2658,7 +2658,7 @@
             CompareConstTensor(input, m_LayerInput);
         }
 
-        void VisitAdditionLayer(const armnn::IConnectableLayer* layer, const char* name = nullptr) override {}
+        void VisitAdditionLayer(const armnn::IConnectableLayer*, const char*) override {}
 
     private:
         armnn::ConstTensor m_LayerInput;
