diff --git a/bmc/firmware-handler/test/crc_mock.hpp b/bmc/firmware-handler/test/crc_mock.hpp
index 293ec24..c33188d 100644
--- a/bmc/firmware-handler/test/crc_mock.hpp
+++ b/bmc/firmware-handler/test/crc_mock.hpp
@@ -18,6 +18,6 @@
 {
   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));
 };
diff --git a/bmc/firmware-handler/test/data_mock.hpp b/bmc/firmware-handler/test/data_mock.hpp
index c8109ad..ad41e63 100644
--- a/bmc/firmware-handler/test/data_mock.hpp
+++ b/bmc/firmware-handler/test/data_mock.hpp
@@ -12,11 +12,13 @@
   public:
     virtual ~DataHandlerMock() = default;
 
-    MOCK_METHOD0(open, bool());
-    MOCK_METHOD0(close, bool());
-    MOCK_METHOD1(copyFrom, std::vector<std::uint8_t>(std::uint32_t));
-    MOCK_METHOD1(writeMeta, bool(const std::vector<std::uint8_t>&));
-    MOCK_METHOD0(readMeta, std::vector<std::uint8_t>());
+    MOCK_METHOD(bool, open, (), (override));
+    MOCK_METHOD(bool, close, (), (override));
+    MOCK_METHOD(std::vector<std::uint8_t>, copyFrom, (std::uint32_t),
+                (override));
+    MOCK_METHOD(bool, writeMeta, (const std::vector<std::uint8_t>&),
+                (override));
+    MOCK_METHOD(std::vector<std::uint8_t>, readMeta, (), (override));
 };
 
 } // namespace ipmi_flash
diff --git a/bmc/firmware-handler/test/window_mapper_mock.hpp b/bmc/firmware-handler/test/window_mapper_mock.hpp
index dd3a89b..3983943 100644
--- a/bmc/firmware-handler/test/window_mapper_mock.hpp
+++ b/bmc/firmware-handler/test/window_mapper_mock.hpp
@@ -16,9 +16,10 @@
   public:
     virtual ~HardwareInterfaceMock() = default;
 
-    MOCK_METHOD0(open, MemorySet());
-    MOCK_METHOD0(close, ());
-    MOCK_METHOD2(mapWindow, WindowMapResult(std::uint32_t, std::uint32_t));
+    MOCK_METHOD(MemorySet, open, (), (override));
+    MOCK_METHOD(void, close, (), (override));
+    MOCK_METHOD(WindowMapResult, mapWindow, (std::uint32_t, std::uint32_t),
+                (override));
 };
 
 } // namespace ipmi_flash
diff --git a/bmc/test/image_mock.hpp b/bmc/test/image_mock.hpp
index 1d4f726..9999f58 100644
--- a/bmc/test/image_mock.hpp
+++ b/bmc/test/image_mock.hpp
@@ -13,12 +13,14 @@
 {
   public:
     virtual ~ImageHandlerMock() = default;
-    MOCK_METHOD2(open, bool(const std::string&, std::ios_base::openmode));
-    MOCK_METHOD0(close, void());
-    MOCK_METHOD2(write, bool(std::uint32_t, const std::vector<std::uint8_t>&));
-    MOCK_METHOD2(read, std::optional<std::vector<std::uint8_t>>(std::uint32_t,
-                                                                std::uint32_t));
-    MOCK_METHOD0(getSize, int());
+    MOCK_METHOD(bool, open, (const std::string&, std::ios_base::openmode),
+                (override));
+    MOCK_METHOD(void, close, (), (override));
+    MOCK_METHOD(bool, write, (std::uint32_t, const std::vector<std::uint8_t>&),
+                (override));
+    MOCK_METHOD(std::optional<std::vector<std::uint8_t>>, read,
+                (std::uint32_t, std::uint32_t), (override));
+    MOCK_METHOD(int, getSize, (), (override));
 };
 
 std::unique_ptr<ImageHandlerMock> CreateImageMock()
diff --git a/bmc/test/triggerable_mock.hpp b/bmc/test/triggerable_mock.hpp
index de2b025..0db90ee 100644
--- a/bmc/test/triggerable_mock.hpp
+++ b/bmc/test/triggerable_mock.hpp
@@ -15,9 +15,10 @@
 class TriggerMock : public TriggerableActionInterface
 {
   public:
-    MOCK_METHOD0(trigger, bool());
-    MOCK_METHOD0(abort, void());
-    MOCK_METHOD0(status, ActionStatus());
+    MOCK_METHOD(bool, trigger, (), (override));
+    MOCK_METHOD(void, abort, (), (override));
+    MOCK_METHOD(ActionStatus, status, (), (override));
+
     using TriggerableActionInterface::cb;
 };
 
