diff --git a/test/meson.build b/test/meson.build
index 04bbfdc..1ae20c8 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -1,11 +1,8 @@
 pldmd_inc = include_directories('../')
 test_src = declare_dependency(
-          sources: [
-            '../pldmd/instance_id.cpp'],
           include_directories:pldmd_inc)
 
 tests = [
-  'pldmd_instanceid_test',
   'pldmd_registration_test',
 ]
 
diff --git a/test/pldmd_instanceid_test.cpp b/test/pldmd_instanceid_test.cpp
deleted file mode 100644
index 4a1f9f6..0000000
--- a/test/pldmd_instanceid_test.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-#include "pldmd/instance_id.hpp"
-
-#include <stdexcept>
-
-#include <gtest/gtest.h>
-
-using namespace pldm;
-
-TEST(InstanceId, testNext)
-{
-    InstanceId id;
-    ASSERT_EQ(id.next(), 0);
-    ASSERT_EQ(id.next(), 1);
-}
-
-TEST(InstanceId, testAllUsed)
-{
-    InstanceId id;
-    for (size_t i = 0; i < maxInstanceIds; ++i)
-    {
-        ASSERT_EQ(id.next(), i);
-    }
-    EXPECT_THROW(id.next(), std::runtime_error);
-}
-
-TEST(InstanceId, testMarkfree)
-{
-    InstanceId id;
-    for (size_t i = 0; i < maxInstanceIds; ++i)
-    {
-        ASSERT_EQ(id.next(), i);
-    }
-    id.markFree(5);
-    ASSERT_EQ(id.next(), 5);
-    id.markFree(0);
-    ASSERT_EQ(id.next(), 0);
-    EXPECT_THROW(id.next(), std::runtime_error);
-    EXPECT_THROW(id.markFree(32), std::out_of_range);
-}
diff --git a/test/test_instance_id.hpp b/test/test_instance_id.hpp
new file mode 100644
index 0000000..6979e56
--- /dev/null
+++ b/test/test_instance_id.hpp
@@ -0,0 +1,38 @@
+#pragma once
+
+#include "instance_id.hpp"
+
+static constexpr uintmax_t pldmMaxInstanceIds = 32;
+
+class TestInstanceIdDb : public pldm::InstanceIdDb
+{
+  public:
+    TestInstanceIdDb() : TestInstanceIdDb(createDb()) {}
+
+    ~TestInstanceIdDb()
+    {
+        std::filesystem::remove(dbPath);
+    };
+
+  private:
+    static std::filesystem::path createDb()
+    {
+        static const char dbTmpl[] = "/tmp/db.XXXXXX";
+        char dbName[sizeof(dbTmpl)] = {};
+
+        ::strncpy(dbName, dbTmpl, sizeof(dbName));
+        ::close(::mkstemp(dbName));
+
+        std::filesystem::path dbPath(dbName);
+        std::filesystem::resize_file(
+            dbPath, static_cast<uintmax_t>(PLDM_MAX_TIDS) * pldmMaxInstanceIds);
+
+        return dbPath;
+    };
+
+    TestInstanceIdDb(std::filesystem::path dbPath) :
+        InstanceIdDb(dbPath), dbPath(dbPath)
+    {}
+
+    std::filesystem::path dbPath;
+};
