diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index a3c2dfe0f7a6abc3c13c661f68cf3475a18b5ab2..d832826b758521b5f280fb36488ae2758fc8aa3b 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -69,3 +69,5 @@ DYNAMIC_GRAPH_TEST(value)
 DYNAMIC_GRAPH_TEST(signal-ptr)
 DYNAMIC_GRAPH_TEST(real-time-logger)
 DYNAMIC_GRAPH_TEST(debug-trace)
+DYNAMIC_GRAPH_TEST(debug-tracer)
+TARGET_LINK_LIBRARIES(debug-tracer tracer)
diff --git a/tests/debug-tracer.cpp b/tests/debug-tracer.cpp
index f7f7a26f5ae8b10d11cd3e4c762f642a433c36dc..34a8cfd3e85380bd25a95c27b080186565828997 100644
--- a/tests/debug-tracer.cpp
+++ b/tests/debug-tracer.cpp
@@ -6,57 +6,114 @@
  *
  */
 
+#include <iostream>
+
 #include <dynamic-graph/entity.h>
 #include <dynamic-graph/exception-factory.h>
 #include <dynamic-graph/factory.h>
 #include <dynamic-graph/pool.h>
-
+#include <dynamic-graph/signal-ptr.h>
+#include <dynamic-graph/signal-time-dependent.h>
 #include <dynamic-graph/tracer.h>
 
-struct MyEntity : public dynamicgraph::Entity
-{
-  static const std::string CLASS_NAME;
+#define BOOST_TEST_MODULE debug-tracer
 
-  dynamicgraph::SignalPtr<double, int> m_sigdSIN;
-  dynamicgraph::SignalTimeDependent<double, int> m_sigdTimeDepSOUT;
-  
-  MyEntity (const std::string& name)
-    : Entity (name)
-    ,m_sigdSIN(NULL,"MyEntity("+name+")::input(double)::in_double")
-    ,m_sigdTimeDepSOUT(boost::bind(&MyEntity::update,this,_1,_2),
-		       m_sigdSIN,
-		       "MyEntity("+name+")::input(double)::out_double")
-  {
-    signalRegistration(m_sigdSIN << m_sigdTimeDepSOUT);
-  }
+#include <boost/test/unit_test.hpp>
+#include <boost/test/output_test_stream.hpp>
 
-  virtual void display (std::ostream& os) const
-  {
-    os << "Hello! My name is " << getName () << " !" << std::endl;
-  }
-
-  virtual const std::string& getClassName () const
-  {
-    return CLASS_NAME;
-  }
-
-  double & update(double &res, const int &inTime)
+namespace dynamicgraph
+{
+  struct MyEntity : public dynamicgraph::Entity
   {
-    const double &aDouble = m_sigdSIN(inTime);
-    res = aDouble;
-    return res;
-  }
-  
-};
+    static const std::string CLASS_NAME;
+    
+    dynamicgraph::Signal<double, int> m_sigdSIN;
+    dynamicgraph::SignalTimeDependent<double, int> m_sigdTimeDepSOUT;
+    dynamicgraph::SignalTimeDependent<double, int> m_sigdTwoTimeDepSOUT;
+    
+    MyEntity (const std::string& name)
+      : Entity (name)
+      ,m_sigdSIN("MyEntity("+name+")::input(double)::in_double")
+      ,m_sigdTimeDepSOUT(boost::bind(&MyEntity::update,this,_1,_2),
+			 m_sigdSIN,
+			 "MyEntity("+name+")::input(double)::out_double")
+      ,m_sigdTwoTimeDepSOUT(boost::bind(&MyEntity::update,this,_1,_2),
+			    m_sigdSIN,
+			    "MyEntity("+name+")::input(double)::out2double")
+	
+    {
+      signalRegistration(m_sigdSIN
+			 << m_sigdTimeDepSOUT
+			 << m_sigdTwoTimeDepSOUT);
+    }
+    
+    virtual void display (std::ostream& os) const
+    {
+      os << "Hello! My name is " << getName () << " !" << std::endl;
+    }
+    
+    virtual const std::string& getClassName () const
+    {
+      return CLASS_NAME;
+    }
+    
+    double & update(double &res, const int &inTime)
+    {
+      const double &aDouble = m_sigdSIN(inTime);
+      res = aDouble;
+      return res;
+    }
+    
+  };
+  DYNAMICGRAPH_FACTORY_ENTITY_PLUGIN (MyEntity,"MyEntity");
+}
 
 BOOST_AUTO_TEST_CASE(test_tracer)
 {
 
   // Creates a tracer.
-  dynamicgraph::Entity& entity =
-    *dynamicgraph::FactoryStorage::getInstance()->newEntity("Tracer",
-							    "my-tracer");
+  dynamicgraph::Tracer & atracer =
+    *dynamic_cast<dynamicgraph::Tracer *>
+    (dynamicgraph::FactoryStorage::getInstance()->newEntity("Tracer",
+							    "my-tracer"));
+
+  dynamicgraph::Entity & entity =
+    *dynamicgraph::FactoryStorage::getInstance()->newEntity("MyEntity",
+							    "my-entity");
+
+  /// Add trace by name
+  atracer.addSignalToTraceByName("my-entity.out_double","output");
+
+
+  dynamicgraph::SignalBase<int> & aSignal =
+    entity.getSignal("out2double");
+
+  dynamicgraph::Signal<double,int> & aSignalInt =
+    *(dynamic_cast<dynamicgraph::Signal<double,int> *>
+      (& entity.getSignal("in_double")));
+
+  /// Add trace by signal object
+  atracer.addSignalToTrace(aSignal,"output2");
+
+  aSignalInt.setConstant(1.5);
+  
+  std::string rootdir("/tmp");
+  std::string basename("my-tracer");
+  std::string suffix(".dat");
+
+  /// Test openfiles
+  atracer.openFiles(rootdir,basename,suffix);
+
+  atracer.start();
 
+  for(int i=0;i<1000;i++)
+    {
+      aSignal.setTime(i);
+      aSignalInt.setTime(i);
+      atracer.recordTrigger(i,i);
+    }
   
+  atracer.stop();
   
+  atracer.closeFiles();
 }