diff --git a/test/ipmi_open_unittest.cpp b/test/ipmi_open_unittest.cpp
index 39ad426..8232340 100644
--- a/test/ipmi_open_unittest.cpp
+++ b/test/ipmi_open_unittest.cpp
@@ -93,11 +93,10 @@
     uint16_t returnedSession = 0x54;
 
     EXPECT_CALL(mgr, open(req->flags, StrEq(blobId), NotNull()))
-        .WillOnce(Invoke(
-            [&](uint16_t flags, const std::string& path, uint16_t* session) {
-                (*session) = returnedSession;
-                return true;
-            }));
+        .WillOnce(Invoke([&](uint16_t, const std::string&, uint16_t* session) {
+            (*session) = returnedSession;
+            return true;
+        }));
 
     EXPECT_EQ(IPMI_CC_OK, openBlob(&mgr, request, reply, &dataLen));
 
diff --git a/test/ipmi_sessionstat_unittest.cpp b/test/ipmi_sessionstat_unittest.cpp
index f067c15..4bf1125 100644
--- a/test/ipmi_sessionstat_unittest.cpp
+++ b/test/ipmi_sessionstat_unittest.cpp
@@ -67,7 +67,7 @@
 
     EXPECT_CALL(mgr, stat(Matcher<uint16_t>(req->sessionId),
                           Matcher<BlobMeta*>(NotNull())))
-        .WillOnce(Invoke([&](uint16_t session, BlobMeta* meta) {
+        .WillOnce(Invoke([&](uint16_t, BlobMeta* meta) {
             meta->blobState = blobState;
             meta->size = size;
             return true;
@@ -110,7 +110,7 @@
 
     EXPECT_CALL(mgr, stat(Matcher<uint16_t>(req->sessionId),
                           Matcher<BlobMeta*>(NotNull())))
-        .WillOnce(Invoke([&](uint16_t session, BlobMeta* meta) {
+        .WillOnce(Invoke([&](uint16_t, BlobMeta* meta) {
             (*meta) = lmeta;
             return true;
         }));
diff --git a/test/ipmi_stat_unittest.cpp b/test/ipmi_stat_unittest.cpp
index f173985..083a980 100644
--- a/test/ipmi_stat_unittest.cpp
+++ b/test/ipmi_stat_unittest.cpp
@@ -100,7 +100,7 @@
 
     EXPECT_CALL(mgr, stat(Matcher<const std::string&>(StrEq(blobId)),
                           Matcher<BlobMeta*>(NotNull())))
-        .WillOnce(Invoke([&](const std::string& path, BlobMeta* meta) {
+        .WillOnce(Invoke([&](const std::string&, BlobMeta* meta) {
             meta->blobState = blobState;
             meta->size = size;
             return true;
@@ -147,7 +147,7 @@
 
     EXPECT_CALL(mgr, stat(Matcher<const std::string&>(StrEq(blobId)),
                           Matcher<BlobMeta*>(NotNull())))
-        .WillOnce(Invoke([&](const std::string& path, BlobMeta* meta) {
+        .WillOnce(Invoke([&](const std::string&, BlobMeta* meta) {
             (*meta) = lmeta;
             return true;
         }));
diff --git a/test/process_unittest.cpp b/test/process_unittest.cpp
index 1f5b0c3..8c133e5 100644
--- a/test/process_unittest.cpp
+++ b/test/process_unittest.cpp
@@ -197,9 +197,8 @@
     uint8_t request[MAX_IPMI_BUFFER] = {0};
     uint8_t reply[MAX_IPMI_BUFFER] = {0};
 
-    IpmiBlobHandler h = [](ManagerInterface* mgr, const uint8_t* reqBuf,
-                           uint8_t* replyCmdBuf,
-                           size_t* dataLen) { return IPMI_CC_INVALID; };
+    IpmiBlobHandler h = [](ManagerInterface*, const uint8_t*, uint8_t*,
+                           size_t*) { return IPMI_CC_INVALID; };
 
     dataLen = sizeof(request);
 
@@ -217,8 +216,8 @@
     uint8_t request[MAX_IPMI_BUFFER] = {0};
     uint8_t reply[MAX_IPMI_BUFFER] = {0};
 
-    IpmiBlobHandler h = [](ManagerInterface* mgr, const uint8_t* reqBuf,
-                           uint8_t* replyCmdBuf, size_t* dataLen) {
+    IpmiBlobHandler h = [](ManagerInterface*, const uint8_t*, uint8_t*,
+                           size_t* dataLen) {
         (*dataLen) = 0;
         return IPMI_CC_OK;
     };
@@ -239,8 +238,8 @@
     uint8_t request[MAX_IPMI_BUFFER] = {0};
     uint8_t reply[MAX_IPMI_BUFFER] = {0};
 
-    IpmiBlobHandler h = [](ManagerInterface* mgr, const uint8_t* reqBuf,
-                           uint8_t* replyCmdBuf, size_t* dataLen) {
+    IpmiBlobHandler h = [](ManagerInterface*, const uint8_t*, uint8_t*,
+                           size_t* dataLen) {
         (*dataLen) = sizeof(uint8_t);
         return IPMI_CC_OK;
     };
@@ -262,8 +261,7 @@
     uint8_t reply[MAX_IPMI_BUFFER] = {0};
     uint32_t payloadLen = sizeof(uint16_t) + sizeof(uint8_t);
 
-    IpmiBlobHandler h = [payloadLen](ManagerInterface* mgr,
-                                     const uint8_t* reqBuf,
+    IpmiBlobHandler h = [payloadLen](ManagerInterface*, const uint8_t*,
                                      uint8_t* replyCmdBuf, size_t* dataLen) {
         (*dataLen) = payloadLen;
         replyCmdBuf[2] = 0x56;
diff --git a/test/utils_unittest.cpp b/test/utils_unittest.cpp
index cba8ee2..9c01aef 100644
--- a/test/utils_unittest.cpp
+++ b/test/utils_unittest.cpp
@@ -23,8 +23,7 @@
 
 std::vector<std::string> returnList;
 
-std::vector<std::string> getLibraryList(const std::string& path,
-                                        PathMatcher check)
+std::vector<std::string> getLibraryList(const std::string&, PathMatcher)
 {
     return returnList;
 }
