diff --git a/phosphor-regulators/test/meson.build b/phosphor-regulators/test/meson.build
index 1608961..10dace9 100644
--- a/phosphor-regulators/test/meson.build
+++ b/phosphor-regulators/test/meson.build
@@ -10,6 +10,7 @@
     'configuration_tests.cpp',
     'device_tests.cpp',
     'id_map_tests.cpp',
+    'mock_journal.cpp',
     'pmbus_error_tests.cpp',
     'pmbus_utils_tests.cpp',
     'presence_detection_tests.cpp',
diff --git a/phosphor-regulators/test/mock_journal.cpp b/phosphor-regulators/test/mock_journal.cpp
new file mode 100644
index 0000000..2446182
--- /dev/null
+++ b/phosphor-regulators/test/mock_journal.cpp
@@ -0,0 +1,65 @@
+/**
+ * Copyright © 2020 IBM Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "mock_journal.hpp"
+
+/**
+ * This is the mock implementation of the journal interface.  It just stores the
+ * journal messages in static vectors.
+ *
+ * Executables that need to log real systemd journal messages should link with
+ * the file journal.cpp instead.
+ */
+namespace phosphor::power::regulators::journal
+{
+
+/**
+ * Mock journal messages with a priority value of 'ERR'.
+ */
+static std::vector<std::string> errMessages{};
+
+/**
+ * Mock journal messages with a priority value of 'INFO'.
+ */
+static std::vector<std::string> infoMessages{};
+
+void clear()
+{
+    errMessages.clear();
+    infoMessages.clear();
+}
+
+const std::vector<std::string>& getErrMessages()
+{
+    return errMessages;
+}
+
+const std::vector<std::string>& getInfoMessages()
+{
+    return infoMessages;
+}
+
+void logErr(const std::string& message)
+{
+    errMessages.emplace_back(message);
+}
+
+void logInfo(const std::string& message)
+{
+    infoMessages.emplace_back(message);
+}
+
+} // namespace phosphor::power::regulators::journal
diff --git a/phosphor-regulators/test/mock_journal.hpp b/phosphor-regulators/test/mock_journal.hpp
new file mode 100644
index 0000000..8e2a255
--- /dev/null
+++ b/phosphor-regulators/test/mock_journal.hpp
@@ -0,0 +1,51 @@
+/**
+ * Copyright © 2020 IBM Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#pragma once
+
+#include "journal.hpp"
+
+#include <string>
+#include <vector>
+
+/**
+ * Extensions to the systemd journal interface.
+ *
+ * Provides functions to access and clear mock journal messages that have been
+ * logged.  These functions should only be used by testcases.
+ */
+namespace phosphor::power::regulators::journal
+{
+
+/**
+ * Clears all mock journal messages.
+ */
+void clear();
+
+/**
+ * Returns all mock journal messages with a priority value of 'ERR'.
+ *
+ * @return mock error messages
+ */
+const std::vector<std::string>& getErrMessages();
+
+/**
+ * Returns all mock journal messages with a priority value of 'INFO'.
+ *
+ * @return mock informational messages
+ */
+const std::vector<std::string>& getInfoMessages();
+
+} // namespace phosphor::power::regulators::journal
