diff --git a/test/Makefile.am b/test/Makefile.am
index d1923fa..4b94144 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -27,6 +27,11 @@
 internal_sdref_CPPFLAGS = $(gtest_cppflags)
 internal_sdref_LDADD = $(gtest_ldadd)
 
+check_PROGRAMS += internal_utils
+internal_utils_SOURCES = internal/utils.cpp
+internal_utils_CPPFLAGS = $(gtest_cppflags)
+internal_utils_LDADD = $(gtest_ldadd)
+
 check_PROGRAMS += source_base
 source_base_SOURCES = source/base.cpp
 source_base_CPPFLAGS = $(gtest_cppflags)
diff --git a/test/internal/utils.cpp b/test/internal/utils.cpp
new file mode 100644
index 0000000..2a347ca
--- /dev/null
+++ b/test/internal/utils.cpp
@@ -0,0 +1,38 @@
+#include <gtest/gtest.h>
+#include <sdeventplus/internal/utils.hpp>
+#include <stdexcept>
+#include <system_error>
+
+namespace sdeventplus
+{
+namespace internal
+{
+namespace
+{
+
+TEST(UtilsTest, PerformCallbackSuccess)
+{
+    EXPECT_EQ(0, performCallback([]() {}));
+}
+
+TEST(UtilsTest, SetPrepareSystemError)
+{
+    EXPECT_EQ(-EBUSY, performCallback([]() {
+        throw std::system_error(EBUSY, std::generic_category());
+    }));
+}
+
+TEST(UtilsTest, SetPrepareException)
+{
+    EXPECT_EQ(-ENOSYS,
+              performCallback([]() { throw std::runtime_error("Exception"); }));
+}
+
+TEST(UtilsTest, SetPrepareUnknownException)
+{
+    EXPECT_EQ(-ENOSYS, performCallback([]() { throw static_cast<int>(1); }));
+}
+
+} // namespace
+} // namespace internal
+} // namespace sdeventplus
diff --git a/test/source/base.cpp b/test/source/base.cpp
index 69ae8e2..435b6f2 100644
--- a/test/source/base.cpp
+++ b/test/source/base.cpp
@@ -8,7 +8,6 @@
 #include <sdeventplus/source/base.hpp>
 #include <sdeventplus/test/sdevent.hpp>
 #include <string>
-#include <system_error>
 #include <systemd/sd-event.h>
 #include <type_traits>
 #include <utility>
@@ -322,47 +321,32 @@
     EXPECT_EQ(-EINVAL, event_handler(nullptr, nullptr));
 }
 
-TEST_F(BaseMethodTest, SetPrepareNull)
-{
-    EXPECT_CALL(mock, sd_event_source_set_prepare(expected_source, nullptr))
-        .WillOnce(Return(0));
-    base->set_prepare(nullptr);
-    EXPECT_EQ(-ENOSYS, base->prepareCallback());
-}
-
-TEST_F(BaseMethodTest, SetPrepareSystemError)
-{
-    Base::Callback callback = [](Base&) {
-        throw std::system_error(EBUSY, std::generic_category());
-    };
-    EXPECT_CALL(mock, sd_event_source_set_prepare(expected_source, testing::_))
-        .WillOnce(Return(0));
-    base->set_prepare(std::move(callback));
-    EXPECT_TRUE(base->get_prepare());
-    EXPECT_FALSE(callback);
-    EXPECT_EQ(-EBUSY, base->prepareCallback());
-}
-
-TEST_F(BaseMethodTest, SetPrepareUnknownException)
-{
-    Base::Callback callback = [](Base&) { throw static_cast<int>(1); };
-    EXPECT_CALL(mock, sd_event_source_set_prepare(expected_source, testing::_))
-        .WillOnce(Return(0));
-    base->set_prepare(std::move(callback));
-    EXPECT_TRUE(base->get_prepare());
-    EXPECT_FALSE(callback);
-    EXPECT_EQ(-ENOSYS, base->prepareCallback());
-}
-
 TEST_F(BaseMethodTest, SetPrepareError)
 {
+    EXPECT_CALL(mock, sd_event_source_set_prepare(expected_source, testing::_))
+        .WillOnce(Return(0));
+    base->set_prepare(std::move([](Base&) {}));
+    EXPECT_TRUE(base->get_prepare());
+
     Base::Callback callback = [](Base&) {};
     EXPECT_CALL(mock, sd_event_source_set_prepare(expected_source, testing::_))
         .WillOnce(Return(-EINVAL));
     EXPECT_THROW(base->set_prepare(std::move(callback)), SdEventError);
     EXPECT_FALSE(base->get_prepare());
     EXPECT_TRUE(callback);
-    EXPECT_EQ(-ENOSYS, base->prepareCallback());
+}
+
+TEST_F(BaseMethodTest, SetPrepareNull)
+{
+    EXPECT_CALL(mock, sd_event_source_set_prepare(expected_source, testing::_))
+        .WillOnce(Return(0));
+    base->set_prepare(std::move([](Base&) {}));
+    EXPECT_TRUE(base->get_prepare());
+
+    EXPECT_CALL(mock, sd_event_source_set_prepare(expected_source, nullptr))
+        .WillOnce(Return(0));
+    base->set_prepare(nullptr);
+    EXPECT_FALSE(base->get_prepare());
 }
 
 TEST_F(BaseMethodTest, GetPendingSuccess)
