diff --git a/test/blob_mock.hpp b/test/blob_mock.hpp
index 7ec7d15..06b0c5a 100644
--- a/test/blob_mock.hpp
+++ b/test/blob_mock.hpp
@@ -12,18 +12,22 @@
   public:
     virtual ~BlobMock() = default;
 
-    MOCK_METHOD1(canHandleBlob, bool(const std::string&));
-    MOCK_METHOD0(getBlobIds, std::vector<std::string>());
-    MOCK_METHOD1(deleteBlob, bool(const std::string&));
-    MOCK_METHOD2(stat, bool(const std::string&, BlobMeta*));
-    MOCK_METHOD3(open, bool(uint16_t, uint16_t, const std::string&));
-    MOCK_METHOD3(read, std::vector<uint8_t>(uint16_t, uint32_t, uint32_t));
-    MOCK_METHOD3(write, bool(uint16_t, uint32_t, const std::vector<uint8_t>&));
-    MOCK_METHOD3(writeMeta,
-                 bool(uint16_t, uint32_t, const std::vector<uint8_t>&));
-    MOCK_METHOD2(commit, bool(uint16_t, const std::vector<uint8_t>&));
-    MOCK_METHOD1(close, bool(uint16_t));
-    MOCK_METHOD2(stat, bool(uint16_t, BlobMeta*));
-    MOCK_METHOD1(expire, bool(uint16_t));
+    MOCK_METHOD(bool, canHandleBlob, (const std::string&), (override));
+    MOCK_METHOD(std::vector<std::string>, getBlobIds, (), (override));
+    MOCK_METHOD(bool, deleteBlob, (const std::string&), (override));
+    MOCK_METHOD(bool, stat, (const std::string&, BlobMeta*), (override));
+    MOCK_METHOD(bool, open, (uint16_t, uint16_t, const std::string&),
+                (override));
+    MOCK_METHOD(std::vector<uint8_t>, read, (uint16_t, uint32_t, uint32_t),
+                (override));
+    MOCK_METHOD(bool, write, (uint16_t, uint32_t, const std::vector<uint8_t>&),
+                (override));
+    MOCK_METHOD(bool, writeMeta,
+                (uint16_t, uint32_t, const std::vector<uint8_t>&), (override));
+    MOCK_METHOD(bool, commit, (uint16_t, const std::vector<uint8_t>&),
+                (override));
+    MOCK_METHOD(bool, close, (uint16_t), (override));
+    MOCK_METHOD(bool, stat, (uint16_t, BlobMeta*), (override));
+    MOCK_METHOD(bool, expire, (uint16_t), (override));
 };
 } // namespace blobs
diff --git a/test/dlsys_mock.hpp b/test/dlsys_mock.hpp
index 795b40e..8c2cf21 100644
--- a/test/dlsys_mock.hpp
+++ b/test/dlsys_mock.hpp
@@ -14,9 +14,9 @@
   public:
     virtual ~InternalDlSysMock() = default;
 
-    MOCK_CONST_METHOD0(dlerror, const char*());
-    MOCK_CONST_METHOD2(dlopen, void*(const char*, int));
-    MOCK_CONST_METHOD2(dlsym, void*(void*, const char*));
+    MOCK_METHOD(const char*, dlerror, (), (const, override));
+    MOCK_METHOD(void*, dlopen, (const char*, int), (const, override));
+    MOCK_METHOD(void*, dlsym, (void*, const char*), (const, override));
 };
 
 } // namespace internal
diff --git a/test/manager_mock.hpp b/test/manager_mock.hpp
index bfb3348..9ffd3a2 100644
--- a/test/manager_mock.hpp
+++ b/test/manager_mock.hpp
@@ -16,19 +16,24 @@
   public:
     virtual ~ManagerMock() = default;
 
-    MOCK_METHOD1(registerHandler, bool(std::unique_ptr<GenericBlobInterface>));
-    MOCK_METHOD0(buildBlobList, uint32_t());
-    MOCK_METHOD1(getBlobId, std::string(uint32_t));
-    MOCK_METHOD3(open, bool(uint16_t, const std::string&, uint16_t*));
-    MOCK_METHOD2(stat, bool(const std::string&, BlobMeta*));
-    MOCK_METHOD2(stat, bool(uint16_t, BlobMeta*));
-    MOCK_METHOD2(commit, bool(uint16_t, const std::vector<uint8_t>&));
-    MOCK_METHOD1(close, bool(uint16_t));
-    MOCK_METHOD3(read, std::vector<uint8_t>(uint16_t, uint32_t, uint32_t));
-    MOCK_METHOD3(write, bool(uint16_t, uint32_t, const std::vector<uint8_t>&));
-    MOCK_METHOD1(deleteBlob, bool(const std::string&));
-    MOCK_METHOD3(writeMeta,
-                 bool(uint16_t, uint32_t, const std::vector<uint8_t>&));
+    MOCK_METHOD(bool, registerHandler, (std::unique_ptr<GenericBlobInterface>),
+                (override));
+    MOCK_METHOD(uint32_t, buildBlobList, (), (override));
+    MOCK_METHOD(std::string, getBlobId, (uint32_t), (override));
+    MOCK_METHOD(bool, open, (uint16_t, const std::string&, uint16_t*),
+                (override));
+    MOCK_METHOD(bool, stat, (const std::string&, BlobMeta*), (override));
+    MOCK_METHOD(bool, stat, (uint16_t, BlobMeta*), (override));
+    MOCK_METHOD(bool, commit, (uint16_t, const std::vector<uint8_t>&),
+                (override));
+    MOCK_METHOD(bool, close, (uint16_t), (override));
+    MOCK_METHOD(std::vector<uint8_t>, read, (uint16_t, uint32_t, uint32_t),
+                (override));
+    MOCK_METHOD(bool, write, (uint16_t, uint32_t, const std::vector<uint8_t>&),
+                (override));
+    MOCK_METHOD(bool, deleteBlob, (const std::string&), (override));
+    MOCK_METHOD(bool, writeMeta,
+                (uint16_t, uint32_t, const std::vector<uint8_t>&), (override));
 };
 
 /*
