diff --git a/tests/src/helpers.hpp b/tests/src/helpers.hpp
index 1c4905c..67e179d 100644
--- a/tests/src/helpers.hpp
+++ b/tests/src/helpers.hpp
@@ -4,5 +4,8 @@
 #include "helpers/interfaces/sensor_id_helpers.hpp"
 #include "helpers/labeled_tuple_helpers.hpp"
 #include "helpers/metric_value_helpers.hpp"
+#include "helpers/report_params_helpers.hpp"
+#include "helpers/trigger_helpers.hpp"
+#include "helpers/types/container_types_helpers.hpp"
 #include "helpers/types/duration_types_helpers.hpp"
 #include "helpers/types/object_path_helpers.hpp"
diff --git a/tests/src/helpers/report_params_helpers.hpp b/tests/src/helpers/report_params_helpers.hpp
new file mode 100644
index 0000000..24d2ac5
--- /dev/null
+++ b/tests/src/helpers/report_params_helpers.hpp
@@ -0,0 +1,31 @@
+#pragma once
+
+#include "types/readings.hpp"
+#include "types/report_action.hpp"
+
+#include <ostream>
+
+#include <gmock/gmock.h>
+
+template <class Param>
+void PrintTo(const std::vector<Param>& vec, std::ostream* os);
+
+inline void PrintTo(const ReadingData& data, std::ostream* os)
+{
+    const auto& [id, value, timestamp] = data;
+    *os << "( " << id << ", " << std::to_string(value) << ", "
+        << std::to_string(timestamp) << " )";
+}
+
+inline void PrintTo(const Readings& readings, std::ostream* os)
+{
+    const auto& [timestamp, readingDataVec] = readings;
+    *os << "( " << std::to_string(timestamp) << ", ";
+    PrintTo(readingDataVec, os);
+    *os << " )";
+}
+
+inline void PrintTo(const ReportAction& action, std::ostream* os)
+{
+    *os << utils::enumToString(action);
+}
diff --git a/tests/src/helpers/trigger_helpers.hpp b/tests/src/helpers/trigger_helpers.hpp
new file mode 100644
index 0000000..3c8d699
--- /dev/null
+++ b/tests/src/helpers/trigger_helpers.hpp
@@ -0,0 +1,12 @@
+#pragma once
+
+#include "types/trigger_types.hpp"
+
+#include <ostream>
+
+#include <gmock/gmock.h>
+
+inline void PrintTo(const TriggerAction& action, std::ostream* os)
+{
+    *os << actionToString(action);
+}
diff --git a/tests/src/helpers/types/container_types_helpers.hpp b/tests/src/helpers/types/container_types_helpers.hpp
new file mode 100644
index 0000000..9767595
--- /dev/null
+++ b/tests/src/helpers/types/container_types_helpers.hpp
@@ -0,0 +1,23 @@
+#pragma once
+
+#include <iostream>
+#include <vector>
+
+#include <gmock/gmock.h>
+
+template <class Param>
+void PrintTo(const std::vector<Param>& vec, std::ostream* os)
+{
+    *os << "[ ";
+    bool first = true;
+    for (const auto& item : vec)
+    {
+        if (!first)
+        {
+            *os << ", ";
+        }
+        PrintTo(item, os);
+        first = false;
+    }
+    *os << " ]";
+}
diff --git a/tests/src/params/report_params.hpp b/tests/src/params/report_params.hpp
index a10c783..d9937ca 100644
--- a/tests/src/params/report_params.hpp
+++ b/tests/src/params/report_params.hpp
@@ -1,5 +1,6 @@
 #pragma once
 
+#include "helpers.hpp"
 #include "report_manager.hpp"
 #include "types/report_types.hpp"
 
@@ -119,6 +120,25 @@
         return readingsProperty;
     }
 
+    friend void PrintTo(const ReportParams& params, std::ostream* os)
+    {
+        *os << "{ Id: \"" << params.reportIdProperty << "\", Name: \""
+            << params.reportNameProperty << "\", ReportingType: \""
+            << utils::enumToString(params.reportingTypeProperty)
+            << "\", ReportActions: ";
+        PrintTo(params.reportActionsProperty, os);
+        *os << ", Interval: " << params.intervalProperty
+            << ", Enabled: " << params.enabledProperty
+            << ", AppendLimit: " << std::to_string(params.appendLimitProperty)
+            << ", ReportUpdates: \""
+            << utils::enumToString(params.reportUpdatesProperty)
+            << "\", MetricParameters: ";
+        PrintTo(params.metricParametersProperty, os);
+        *os << ", Readings: ";
+        PrintTo(params.readingsProperty, os);
+        *os << " }";
+    }
+
   private:
     std::string reportIdProperty = "TestId";
     std::string reportNameProperty = "TestReport";
diff --git a/tests/src/test_report.cpp b/tests/src/test_report.cpp
index 31d49c5..10ba120 100644
--- a/tests/src/test_report.cpp
+++ b/tests/src/test_report.cpp
@@ -898,6 +898,16 @@
     ReportParams reportParams;
     std::vector<ReadingData> expectedReadings;
     bool expectedEnabled;
+
+    friend void PrintTo(const ReportUpdatesReportParams& params,
+                        std::ostream* os)
+    {
+        *os << "{ ReportParams: ";
+        PrintTo(params.reportParams, os);
+        *os << ", ExpectedReadings: ";
+        PrintTo(params.expectedReadings, os);
+        *os << ", ExpectedEnabled: " << params.expectedEnabled << " }";
+    }
 };
 
 class TestReportWithReportUpdatesAndLimit :
diff --git a/tests/src/test_sensor_cache.cpp b/tests/src/test_sensor_cache.cpp
index 218e160..3d12563 100644
--- a/tests/src/test_sensor_cache.cpp
+++ b/tests/src/test_sensor_cache.cpp
@@ -21,6 +21,11 @@
         service(service), path(path)
     {}
 
+    friend void PrintTo(const IdParam& param, std::ostream* os)
+    {
+        *os << "(" << param.service << "): " << param.path;
+    }
+
     std::string service;
     std::string path;
 };
