diff --git a/src/ipmiblob/test/blob_interface_mock.hpp b/src/ipmiblob/test/blob_interface_mock.hpp
index f5137d5..b92ba25 100644
--- a/src/ipmiblob/test/blob_interface_mock.hpp
+++ b/src/ipmiblob/test/blob_interface_mock.hpp
@@ -9,20 +9,25 @@
 {
   public:
     virtual ~BlobInterfaceMock() = default;
-    MOCK_METHOD2(commit, void(std::uint16_t, const std::vector<std::uint8_t>&));
-    MOCK_METHOD3(writeMeta, void(std::uint16_t, std::uint32_t,
-                                 const std::vector<std::uint8_t>&));
-    MOCK_METHOD3(writeBytes, void(std::uint16_t, std::uint32_t,
-                                  const std::vector<std::uint8_t>&));
-    MOCK_METHOD0(getBlobList, std::vector<std::string>());
-    MOCK_METHOD1(getStat, StatResponse(const std::string&));
-    MOCK_METHOD1(getStat, StatResponse(std::uint16_t));
-    MOCK_METHOD2(openBlob, std::uint16_t(const std::string&, std::uint16_t));
-    MOCK_METHOD1(closeBlob, void(std::uint16_t));
-    MOCK_METHOD1(deleteBlob, void(const std::string&));
-    MOCK_METHOD3(readBytes,
-                 std::vector<std::uint8_t>(std::uint16_t, std::uint32_t,
-                                           std::uint32_t));
+    MOCK_METHOD(void, commit, (std::uint16_t, const std::vector<std::uint8_t>&),
+                (override));
+    MOCK_METHOD(void, writeMeta,
+                (std::uint16_t, std::uint32_t,
+                 const std::vector<std::uint8_t>&),
+                (override));
+    MOCK_METHOD(void, writeBytes,
+                (std::uint16_t, std::uint32_t,
+                 const std::vector<std::uint8_t>&),
+                (override));
+    MOCK_METHOD(std::vector<std::string>, getBlobList, (), (override));
+    MOCK_METHOD(StatResponse, getStat, (const std::string&), (override));
+    MOCK_METHOD(StatResponse, getStat, (std::uint16_t), (override));
+    MOCK_METHOD(std::uint16_t, openBlob, (const std::string&, std::uint16_t),
+                (override));
+    MOCK_METHOD(void, closeBlob, (std::uint16_t), (override));
+    MOCK_METHOD(void, deleteBlob, (const std::string&), (override));
+    MOCK_METHOD(std::vector<std::uint8_t>, readBytes,
+                (std::uint16_t, std::uint32_t, std::uint32_t), (override));
 };
 
 } // namespace ipmiblob
diff --git a/src/ipmiblob/test/crc_mock.hpp b/src/ipmiblob/test/crc_mock.hpp
index 41c2135..67bf9fd 100644
--- a/src/ipmiblob/test/crc_mock.hpp
+++ b/src/ipmiblob/test/crc_mock.hpp
@@ -21,8 +21,8 @@
 {
   public:
     virtual ~CrcMock() = default;
-    MOCK_CONST_METHOD1(generateCrc,
-                       std::uint16_t(const std::vector<std::uint8_t>&));
+    MOCK_METHOD(std::uint16_t, generateCrc, (const std::vector<std::uint8_t>&),
+                (const, override));
 };
 
 } // namespace ipmiblob
diff --git a/src/ipmiblob/test/ipmi_interface_mock.hpp b/src/ipmiblob/test/ipmi_interface_mock.hpp
index 5f5514c..a78dc13 100644
--- a/src/ipmiblob/test/ipmi_interface_mock.hpp
+++ b/src/ipmiblob/test/ipmi_interface_mock.hpp
@@ -11,9 +11,9 @@
 {
   public:
     virtual ~IpmiInterfaceMock() = default;
-    MOCK_METHOD3(sendPacket,
-                 std::vector<std::uint8_t>(std::uint8_t, std::uint8_t,
-                                           std::vector<std::uint8_t>&));
+    MOCK_METHOD(std::vector<std::uint8_t>, sendPacket,
+                (std::uint8_t, std::uint8_t, std::vector<std::uint8_t>&),
+                (override));
 };
 
 } // namespace ipmiblob
