diff --git a/src/test/util/debug_output.hpp b/src/test/util/debug_output.hpp
index ea0ebf9..aff87d5 100644
--- a/src/test/util/debug_output.hpp
+++ b/src/test/util/debug_output.hpp
@@ -7,66 +7,66 @@
 void dumpAssociationOwnersType(AssociationOwnersType& assocOwners)
 {
     using namespace std;
-    cout << "##### AssociationOwnersType #####" << endl;
+    cout << "##### AssociationOwnersType #####\n";
     for (const auto& i : assocOwners)
     {
-        cout << "------------------------------------" << endl;
-        cout << setw(15) << left << "OBJ PATH:" << i.first << endl;
+        cout << "------------------------------------\n";
+        cout << setw(15) << left << "OBJ PATH:" << i.first << '\n';
 
         for (const auto& j : i.second)
         {
-            cout << setw(16) << left << "DBUS SERVICE:" << j.first << endl;
+            cout << setw(16) << left << "DBUS SERVICE:" << j.first << '\n';
 
             for (const auto& k : j.second)
             {
-                cout << setw(17) << left << "ASSOC PATH:" << k.first << endl;
+                cout << setw(17) << left << "ASSOC PATH:" << k.first << '\n';
 
                 for (const auto& l : k.second)
                 {
-                    cout << setw(18) << left << "ENDPOINT:" << l << endl;
+                    cout << setw(18) << left << "ENDPOINT:" << l << '\n';
                 }
             }
         }
-        cout << "------------------------------------" << endl;
+        cout << "------------------------------------\n";
     }
 }
 
 void dumpAssociationInterfaces(AssociationInterfaces& assocInterfaces)
 {
     using namespace std;
-    cout << "##### AssociationInterfaces #####" << endl;
+    cout << "##### AssociationInterfaces #####\n";
     for (auto i : assocInterfaces)
     {
-        cout << "------------------------------------" << endl;
-        cout << setw(15) << left << "OBJ PATH:" << i.first << endl;
+        cout << "------------------------------------\n";
+        cout << setw(15) << left << "OBJ PATH:" << i.first << '\n';
         auto intfEndpoints = std::get<endpointsPos>(i.second);
 
         for (const auto& k : intfEndpoints)
         {
-            cout << setw(16) << left << "ENDPOINTS:" << k << endl;
+            cout << setw(16) << left << "ENDPOINTS:" << k << '\n';
         }
-        cout << "------------------------------------" << endl;
+        cout << "------------------------------------\n";
     }
 }
 
 void dumpInterfaceMapType(InterfaceMapType& intfMap)
 {
     using namespace std;
-    cout << "##### interfaceMapType #####" << endl;
+    cout << "##### interfaceMapType #####\n";
     for (const auto& i : intfMap)
     {
-        cout << "------------------------------------" << endl;
-        cout << setw(15) << left << "OBJ PATH:" << i.first << endl;
+        cout << "------------------------------------\n";
+        cout << setw(15) << left << "OBJ PATH:" << i.first << '\n';
 
         for (const auto& j : i.second)
         {
-            cout << setw(16) << left << "DBUS SERVICE:" << j.first << endl;
+            cout << setw(16) << left << "DBUS SERVICE:" << j.first << '\n';
 
             for (const auto& k : j.second)
             {
-                cout << setw(18) << left << "INTERFACE:" << k << endl;
+                cout << setw(18) << left << "INTERFACE:" << k << '\n';
             }
         }
     }
-    cout << "------------------------------------" << endl;
+    cout << "------------------------------------\n";
 }
