diff --git a/alib2algo/test-src/automaton/determinize/determinizeTest.cpp b/alib2algo/test-src/automaton/determinize/determinizeTest.cpp
index b0f106ab1862eb26b3293ecabd341cbcb9f37da0..0dbc7162d7d42cfed436ce6e219d2686985a7571 100644
--- a/alib2algo/test-src/automaton/determinize/determinizeTest.cpp
+++ b/alib2algo/test-src/automaton/determinize/determinizeTest.cpp
@@ -10,6 +10,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( determinizeTest, "automaton" );
 CPPUNIT_TEST_SUITE_REGISTRATION( determinizeTest );
 
 void determinizeTest::setUp() {
diff --git a/alib2algo/test-src/automaton/simplify/FSMSingleInitialStateTest.cpp b/alib2algo/test-src/automaton/simplify/FSMSingleInitialStateTest.cpp
index 6420d040ed42ce190bc199bb7f7f6ea0e18115a3..02d786ce34330e74c559776ef1259f9cb18734f7 100644
--- a/alib2algo/test-src/automaton/simplify/FSMSingleInitialStateTest.cpp
+++ b/alib2algo/test-src/automaton/simplify/FSMSingleInitialStateTest.cpp
@@ -9,6 +9,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( FSMSingleInitialStateTest, "automaton" );
 CPPUNIT_TEST_SUITE_REGISTRATION( FSMSingleInitialStateTest );
 
 void FSMSingleInitialStateTest::setUp() {
diff --git a/alib2algo/test-src/automaton/simplify/FSMTotalTest.cpp b/alib2algo/test-src/automaton/simplify/FSMTotalTest.cpp
index 88c1555245c9f2885745592fcfbc23ad7d8ccad1..ae3733e23ecf69ddb9867dbe605214b306a14a54 100644
--- a/alib2algo/test-src/automaton/simplify/FSMTotalTest.cpp
+++ b/alib2algo/test-src/automaton/simplify/FSMTotalTest.cpp
@@ -6,6 +6,7 @@
 #include "automaton/simplify/Normalize.h"
 #include "automaton/simplify/Trim.h"
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TotalTest, "automaton" );
 CPPUNIT_TEST_SUITE_REGISTRATION( TotalTest );
 
 void TotalTest::setUp() {
diff --git a/alib2algo/test-src/automaton/simplify/minimizeBrzozowskiTest.cpp b/alib2algo/test-src/automaton/simplify/minimizeBrzozowskiTest.cpp
index ef1daf2b4080d49f85ff999a68f7576f902d94ad..72351f82883fbc269e94a76a7c3276dbc53e9401 100644
--- a/alib2algo/test-src/automaton/simplify/minimizeBrzozowskiTest.cpp
+++ b/alib2algo/test-src/automaton/simplify/minimizeBrzozowskiTest.cpp
@@ -8,6 +8,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( minimizeBrzozowskiTest, "automaton" );
 CPPUNIT_TEST_SUITE_REGISTRATION( minimizeBrzozowskiTest );
 
 void minimizeBrzozowskiTest::setUp() {
diff --git a/alib2algo/test-src/automaton/simplify/minimizeTest.cpp b/alib2algo/test-src/automaton/simplify/minimizeTest.cpp
index f5153ba2896850a7642f3deab3567acd5b425f33..1e58cc362e615019f4d53e2dbc29168e991b05f5 100644
--- a/alib2algo/test-src/automaton/simplify/minimizeTest.cpp
+++ b/alib2algo/test-src/automaton/simplify/minimizeTest.cpp
@@ -5,6 +5,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( minimizeTest, "automaton" );
 CPPUNIT_TEST_SUITE_REGISTRATION( minimizeTest );
 
 void minimizeTest::setUp() {
diff --git a/alib2algo/test-src/automaton/simplify/normalizeTest.cpp b/alib2algo/test-src/automaton/simplify/normalizeTest.cpp
index e12bbec861366f3257b4d66c05883c1e0c1f99e4..e35dddfbafad9f25d31f9ea7ab89afd4db7111c6 100644
--- a/alib2algo/test-src/automaton/simplify/normalizeTest.cpp
+++ b/alib2algo/test-src/automaton/simplify/normalizeTest.cpp
@@ -5,6 +5,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( normalizeTest, "automaton" );
 CPPUNIT_TEST_SUITE_REGISTRATION( normalizeTest );
 
 void normalizeTest::setUp() {
diff --git a/alib2algo/test-src/automaton/simplify/trimTest.cpp b/alib2algo/test-src/automaton/simplify/trimTest.cpp
index a4b46abe0f2eff9d34ceb896442136f5519293c6..cdfcbd251b7fa17e736009ea0142d2c198a29633 100644
--- a/alib2algo/test-src/automaton/simplify/trimTest.cpp
+++ b/alib2algo/test-src/automaton/simplify/trimTest.cpp
@@ -9,6 +9,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( trimTest, "automaton" );
 CPPUNIT_TEST_SUITE_REGISTRATION( trimTest );
 
 void trimTest::setUp() {
diff --git a/alib2algo/test-src/automaton/transform/AutomataConcatenationTest.cpp b/alib2algo/test-src/automaton/transform/AutomataConcatenationTest.cpp
index 611a46b95c7ff71861cab42aa9be69b7a6295253..7383cbbb540470e9735bf2859f7e667e85eb3265 100644
--- a/alib2algo/test-src/automaton/transform/AutomataConcatenationTest.cpp
+++ b/alib2algo/test-src/automaton/transform/AutomataConcatenationTest.cpp
@@ -13,6 +13,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( AutomataConcatenationTest, "automaton" );
 CPPUNIT_TEST_SUITE_REGISTRATION( AutomataConcatenationTest );
 
 void AutomataConcatenationTest::setUp() {
diff --git a/alib2algo/test-src/automaton/transform/AutomataUnionTest.cpp b/alib2algo/test-src/automaton/transform/AutomataUnionTest.cpp
index 05be636ddf617ad77babf1cfd435df61dcde58ec..91c3ef9f2caab6a48322a46db55680dd59520e69 100644
--- a/alib2algo/test-src/automaton/transform/AutomataUnionTest.cpp
+++ b/alib2algo/test-src/automaton/transform/AutomataUnionTest.cpp
@@ -12,6 +12,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( AutomataUnionTest, "automaton" );
 CPPUNIT_TEST_SUITE_REGISTRATION( AutomataUnionTest );
 
 void AutomataUnionTest::setUp() {
diff --git a/alib2algo/test-src/automaton/transform/AutomatonIterationTest.cpp b/alib2algo/test-src/automaton/transform/AutomatonIterationTest.cpp
index 6c8e3cb66b84808a7bfde02a5c8864f03c0d4ed0..b2b43a5746b7d7697ea5e984f182e29c1da2afd7 100644
--- a/alib2algo/test-src/automaton/transform/AutomatonIterationTest.cpp
+++ b/alib2algo/test-src/automaton/transform/AutomatonIterationTest.cpp
@@ -13,6 +13,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( AutomatonIterationTest, "automaton" );
 CPPUNIT_TEST_SUITE_REGISTRATION( AutomatonIterationTest );
 
 void AutomatonIterationTest::setUp() {
diff --git a/alib2algo/test-src/grammar/generate/GrammarGenerateUpToLength.cpp b/alib2algo/test-src/grammar/generate/GrammarGenerateUpToLength.cpp
index a25a1d1b5f289c9a3da8c86a93466285b575e69b..55189e5ec518186bafe11a76ae5e223502492640 100644
--- a/alib2algo/test-src/grammar/generate/GrammarGenerateUpToLength.cpp
+++ b/alib2algo/test-src/grammar/generate/GrammarGenerateUpToLength.cpp
@@ -9,6 +9,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( GrammarGenerateUpToLength, "grammar" );
 CPPUNIT_TEST_SUITE_REGISTRATION( GrammarGenerateUpToLength );
 
 void GrammarGenerateUpToLength::setUp() {
diff --git a/alib2algo/test-src/grammar/properties/GrammarPropertiesTest.cpp b/alib2algo/test-src/grammar/properties/GrammarPropertiesTest.cpp
index 426e7902510396d4d4fed2ebb13b38eb7ed73b5f..5ce913983ed4cb1723f4cf276e0e1fe4b2d97d6e 100644
--- a/alib2algo/test-src/grammar/properties/GrammarPropertiesTest.cpp
+++ b/alib2algo/test-src/grammar/properties/GrammarPropertiesTest.cpp
@@ -12,6 +12,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( GrammarPropertiesTest, "grammar" );
 CPPUNIT_TEST_SUITE_REGISTRATION( GrammarPropertiesTest );
 
 void GrammarPropertiesTest::setUp() {
diff --git a/alib2algo/test-src/grammar/simplify/GrammarEpsilonRemoverTest.cpp b/alib2algo/test-src/grammar/simplify/GrammarEpsilonRemoverTest.cpp
index 41d2a0e433356706c063c92f054afe62c7461dfb..79b7bca9b3bef14eb017a9cb72750f81f6f396be 100644
--- a/alib2algo/test-src/grammar/simplify/GrammarEpsilonRemoverTest.cpp
+++ b/alib2algo/test-src/grammar/simplify/GrammarEpsilonRemoverTest.cpp
@@ -7,6 +7,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( GrammarEpsilonRemoverTest, "grammar" );
 CPPUNIT_TEST_SUITE_REGISTRATION( GrammarEpsilonRemoverTest );
 
 void GrammarEpsilonRemoverTest::setUp() {
diff --git a/alib2algo/test-src/grammar/simplify/GrammarLeftRecursionRemoverTest.cpp b/alib2algo/test-src/grammar/simplify/GrammarLeftRecursionRemoverTest.cpp
index 00f4c6588388d33a6298442762fc8d2d53e4d556..4cd6b5548b64316c169d2a98824b69f45597563b 100644
--- a/alib2algo/test-src/grammar/simplify/GrammarLeftRecursionRemoverTest.cpp
+++ b/alib2algo/test-src/grammar/simplify/GrammarLeftRecursionRemoverTest.cpp
@@ -10,6 +10,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( GrammarLeftRecursionRemoverTest, "grammar" );
 CPPUNIT_TEST_SUITE_REGISTRATION( GrammarLeftRecursionRemoverTest );
 
 void GrammarLeftRecursionRemoverTest::setUp() {
diff --git a/alib2algo/test-src/grammar/simplify/GrammarSimpleRulesRemoverTest.cpp b/alib2algo/test-src/grammar/simplify/GrammarSimpleRulesRemoverTest.cpp
index f544bd7b639c380bbc038247a55d47305fe66865..4496970975877dd4212bd74b63fe1e3bc7e9ac10 100644
--- a/alib2algo/test-src/grammar/simplify/GrammarSimpleRulesRemoverTest.cpp
+++ b/alib2algo/test-src/grammar/simplify/GrammarSimpleRulesRemoverTest.cpp
@@ -9,6 +9,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( GrammarSimpleRulesRemoverTest, "grammar" );
 CPPUNIT_TEST_SUITE_REGISTRATION( GrammarSimpleRulesRemoverTest );
 
 void GrammarSimpleRulesRemoverTest::setUp() {
diff --git a/alib2algo/test-src/grammar/simplify/GrammarToCNFTest.cpp b/alib2algo/test-src/grammar/simplify/GrammarToCNFTest.cpp
index 825517bdf673828422e1c0568cac7437f80b0063..eebc207ec3ce7bfed516cdabd26fc7b627ebe13e 100644
--- a/alib2algo/test-src/grammar/simplify/GrammarToCNFTest.cpp
+++ b/alib2algo/test-src/grammar/simplify/GrammarToCNFTest.cpp
@@ -15,6 +15,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( GrammarToCNFTest, "grammar" );
 CPPUNIT_TEST_SUITE_REGISTRATION( GrammarToCNFTest );
 
 void GrammarToCNFTest::setUp() {
diff --git a/alib2algo/test-src/grammar/simplify/GrammarToGNFTest.cpp b/alib2algo/test-src/grammar/simplify/GrammarToGNFTest.cpp
index a7f68578965ebfbe0a3a6c97ce943d10458eb2a6..3ec50390f0a041008ce64686876d05fae2fddc09 100644
--- a/alib2algo/test-src/grammar/simplify/GrammarToGNFTest.cpp
+++ b/alib2algo/test-src/grammar/simplify/GrammarToGNFTest.cpp
@@ -10,6 +10,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( GrammarToGNFTest, "grammar" );
 CPPUNIT_TEST_SUITE_REGISTRATION( GrammarToGNFTest );
 
 void GrammarToGNFTest::setUp() {
diff --git a/alib2algo/test-src/grammar/toGrammar/rg2rgTest.cpp b/alib2algo/test-src/grammar/toGrammar/rg2rgTest.cpp
index ebf7a14df0cd2755058c0f973ce4c4e695c6cac5..0a379d8e03a9497fe90f023e69d66361a281e13d 100644
--- a/alib2algo/test-src/grammar/toGrammar/rg2rgTest.cpp
+++ b/alib2algo/test-src/grammar/toGrammar/rg2rgTest.cpp
@@ -6,6 +6,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( rg2rgTest, "grammar" );
 CPPUNIT_TEST_SUITE_REGISTRATION( rg2rgTest );
 
 void rg2rgTest::setUp() {
diff --git a/alib2algo/test-src/graph/shortestpath/BellmanFordTest.cpp b/alib2algo/test-src/graph/shortestpath/BellmanFordTest.cpp
index 64d2ceb198d47ec72c8f41c1e8aeadbc37f2b3eb..cfb2a04f2c2ee2cd86490b00a23c2ff13a525011 100644
--- a/alib2algo/test-src/graph/shortestpath/BellmanFordTest.cpp
+++ b/alib2algo/test-src/graph/shortestpath/BellmanFordTest.cpp
@@ -4,7 +4,8 @@
 
 #include <exception/AlibException.h>
 
-CPPUNIT_TEST_SUITE_REGISTRATION(GraphBellmanFordTest);
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( GraphBellmanFordTest, "graph" );
+CPPUNIT_TEST_SUITE_REGISTRATION( GraphBellmanFordTest );
 
 void GraphBellmanFordTest::testSimple()
 {
diff --git a/alib2algo/test-src/graph/shortestpath/DijkstraTest.cpp b/alib2algo/test-src/graph/shortestpath/DijkstraTest.cpp
index 6b1b2b65bf009c544a3eb3f6ddb05e6b151ddcf8..f58a01773c0ad9931f10bdab2179cf59462928d5 100644
--- a/alib2algo/test-src/graph/shortestpath/DijkstraTest.cpp
+++ b/alib2algo/test-src/graph/shortestpath/DijkstraTest.cpp
@@ -4,7 +4,8 @@
 
 #include <exception/AlibException.h>
 
-CPPUNIT_TEST_SUITE_REGISTRATION(GraphDijkstraTest);
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( GraphDijkstraTest, "graph" );
+CPPUNIT_TEST_SUITE_REGISTRATION( GraphDijkstraTest );
 
 void GraphDijkstraTest::testSimple()
 {
diff --git a/alib2algo/test-src/graph/shortestpath/FloydWarshallTest.cpp b/alib2algo/test-src/graph/shortestpath/FloydWarshallTest.cpp
index 2b4c78c6e9bae84e84c07d11003fb9c5586ed488..8f406232661ffba4f5ecbb3ef33685d112f9951c 100644
--- a/alib2algo/test-src/graph/shortestpath/FloydWarshallTest.cpp
+++ b/alib2algo/test-src/graph/shortestpath/FloydWarshallTest.cpp
@@ -4,7 +4,8 @@
 
 #include <exception/AlibException.h>
 
-CPPUNIT_TEST_SUITE_REGISTRATION(GraphFloydWarshallTest);
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( GraphFloydWarshallTest, "graph" );
+CPPUNIT_TEST_SUITE_REGISTRATION( GraphFloydWarshallTest );
 
 void GraphFloydWarshallTest::testSimple()
 {
diff --git a/alib2algo/test-src/graph/sort/TopologicalSortTest.cpp b/alib2algo/test-src/graph/sort/TopologicalSortTest.cpp
index 1b49737974af5efbc44f0044b36809af901a5059..b8fee0bad369d726e1ff469c80107dae4b65fb16 100644
--- a/alib2algo/test-src/graph/sort/TopologicalSortTest.cpp
+++ b/alib2algo/test-src/graph/sort/TopologicalSortTest.cpp
@@ -4,7 +4,8 @@
 
 #define CPPUNIT_ASSERT_EQUAL_INT(a, b) CPPUNIT_ASSERT_EQUAL(a, (int)b)
 
-CPPUNIT_TEST_SUITE_REGISTRATION(GraphTopologicalSortTest);
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( GraphTopologicalSortTest, "graph" );
+CPPUNIT_TEST_SUITE_REGISTRATION( GraphTopologicalSortTest );
 
 void GraphTopologicalSortTest::testSort1()
 {
diff --git a/alib2algo/test-src/graph/spanningtree/JarnikPrimTest.cpp b/alib2algo/test-src/graph/spanningtree/JarnikPrimTest.cpp
index f0639b6653ea894a827329abfdfb0f2ae1cfeb43..e1378e27639b24749e0c2289d8b111927b304863 100644
--- a/alib2algo/test-src/graph/spanningtree/JarnikPrimTest.cpp
+++ b/alib2algo/test-src/graph/spanningtree/JarnikPrimTest.cpp
@@ -4,7 +4,8 @@
 
 #include <iostream>
 
-CPPUNIT_TEST_SUITE_REGISTRATION(GraphJarnikPrimTest);
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( GraphJarnikPrimTest, "graph" );
+CPPUNIT_TEST_SUITE_REGISTRATION( GraphJarnikPrimTest );
 
 void GraphJarnikPrimTest::testSpanningTree1()
 {
diff --git a/alib2algo/test-src/graph/traverse/BfsTest.cpp b/alib2algo/test-src/graph/traverse/BfsTest.cpp
index 75b3e15870ad763d4c0a4b7ed0ca7924705f4db3..a1388e07372e0af370055440d8d28ab801f1cb58 100644
--- a/alib2algo/test-src/graph/traverse/BfsTest.cpp
+++ b/alib2algo/test-src/graph/traverse/BfsTest.cpp
@@ -4,7 +4,8 @@
 
 #include <unordered_map>
 
-CPPUNIT_TEST_SUITE_REGISTRATION(GraphBfsTest);
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( GraphBfsTest, "graph" );
+CPPUNIT_TEST_SUITE_REGISTRATION( GraphBfsTest );
 
 void GraphBfsTest::testTraverseAll()
 {
diff --git a/alib2algo/test-src/graph/traverse/DfsTest.cpp b/alib2algo/test-src/graph/traverse/DfsTest.cpp
index 4610da03157d1053bacd1375d0801f1ef50342cf..ce5f5553e9c4d9f3f65a431a1c7fe27d9e93aa59 100644
--- a/alib2algo/test-src/graph/traverse/DfsTest.cpp
+++ b/alib2algo/test-src/graph/traverse/DfsTest.cpp
@@ -2,7 +2,8 @@
 
 #include "graph/traverse/Dfs.h"
 
-CPPUNIT_TEST_SUITE_REGISTRATION(GraphDfsTest);
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( GraphDfsTest, "graph" );
+CPPUNIT_TEST_SUITE_REGISTRATION( GraphDfsTest );
 
 void GraphDfsTest::testTraverseAll()
 {
diff --git a/alib2algo/test-src/main.cpp b/alib2algo/test-src/main.cpp
index 2d574dd5c475fa7d903396ab24654b2cc90f2cb3..6adad0f4511ce86a7dd9a16dce44c919b47637f3 100644
--- a/alib2algo/test-src/main.cpp
+++ b/alib2algo/test-src/main.cpp
@@ -1,4 +1,5 @@
-//#include "stdafx.h"
+#include <tclap/CmdLine.h>
+
 #include <cppunit/CompilerOutputter.h>
 #include <cppunit/extensions/TestFactoryRegistry.h>
 #include <cppunit/ui/text/TestRunner.h>
@@ -13,6 +14,8 @@
 #include <cppunit/SourceLine.h>
 #include <cppunit/Exception.h>
 
+#include <exception/AlibException.h>
+
 CPPUNIT_NS_BEGIN
 
 class CPPUNIT_API TestProgressListener : public TestListener
@@ -92,34 +95,60 @@ void TestProgressListener::printResults() const {
 
 CPPUNIT_NS_END
 
-int main(int , char*[])
-{
-  CppUnit::TestResult controller;
-
-  CppUnit::TestResultCollector result;
-  controller.addListener( &result );
-
-  CppUnit::TestProgressListener progressListener;
-  controller.addListener( &progressListener );
-
-  // Get the top level suite from the registry
-  CppUnit::Test *suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest();
-
-  // Adds the test to the list of test to run
-  CppUnit::TextUi::TestRunner runner;
-  runner.addTest( suite );
-
-  // Change the default outputter to a compiler error format outputter
-  runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(),
-                                                       std::cerr ) );
-  // Run the tests.
-  runner.run( controller );
-
-  progressListener.printResults();
-
-  std::ofstream xmlFileResults("CppUnitTestResults.xml");
-  CppUnit::XmlOutputter xmlOut(&result, xmlFileResults);
-  xmlOut.write();
-
-  return progressListener.getResult();
+int main(int argc, char* argv[]) {
+	try {
+		TCLAP::CmdLine cmd("Main test binary.", ' ', "0.01");
+
+		TCLAP::MultiArg<std::string> testPath("p", "path", "test path", false, "string" );
+		cmd.add( testPath );
+
+		cmd.parse(argc, argv);
+
+		CppUnit::TestResult controller;
+
+		CppUnit::TestResultCollector result;
+		controller.addListener( &result );
+
+		CppUnit::TestProgressListener progressListener;
+		controller.addListener( &progressListener );
+
+		CppUnit::Test *suite = NULL;
+		if(testPath.getValue().size() == 0) {
+			// Get the top level suite from the registry
+			suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest();
+		} else if(testPath.getValue().size() == 1) {
+			suite = CppUnit::TestFactoryRegistry::getRegistry(testPath.getValue()[0]).makeTest();
+		} else {
+			throw TCLAP::ArgException("too many arguments in path switch");
+		}
+
+		// Adds the test to the list of test to run
+		CppUnit::TextUi::TestRunner runner;
+		runner.addTest( suite );
+
+		// Change the default outputter to a compiler error format outputter
+		runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(), std::cerr ) );
+		// Run the tests.
+		runner.run( controller );
+
+		progressListener.printResults();
+
+		std::ofstream xmlFileResults("CppUnitTestResults.xml");
+		CppUnit::XmlOutputter xmlOut(&result, xmlFileResults);
+		xmlOut.write();
+
+		return progressListener.getResult();
+	} catch(const exception::AlibException& exception) {
+		std::cerr << exception.getCause() << std::endl;
+		return 1;
+	} catch(const TCLAP::ArgException& exception) {
+		std::cerr << exception.error() << std::endl;
+		return 2;
+	} catch (const std::exception& exception) {
+		std::cerr << "Exception caught: " << exception.what() << std::endl;
+		return 3;
+	} catch(...) {
+		std::cerr << "Unknown exception caught." << std::endl;
+		return 127;
+	}
 }
diff --git a/alib2algo/test-src/regexp/RegExpTest.cpp b/alib2algo/test-src/regexp/RegExpTest.cpp
index 6b2fc44481106503cb4d15302b06c509eac0d085..9f49e0ee4a39ccae1a354d67cdc2c4adad291e20 100644
--- a/alib2algo/test-src/regexp/RegExpTest.cpp
+++ b/alib2algo/test-src/regexp/RegExpTest.cpp
@@ -14,6 +14,7 @@
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 #define CPPUNIT_EXCLUSIVE_OR(x, y) CPPUNIT_ASSERT((!(x) && (y)) || ((x) && !(y)))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( RegExpTest, "regexp" );
 CPPUNIT_TEST_SUITE_REGISTRATION( RegExpTest );
 
 void RegExpTest::setUp() {
diff --git a/alib2algo/test-src/regexp/properties/RegExpEmptyTest.cpp b/alib2algo/test-src/regexp/properties/RegExpEmptyTest.cpp
index 30070bee673e06fcae44dfff4d540debc8ea148d..944578d3892f3abf15d8b4aa863b5b1aabdacdae 100644
--- a/alib2algo/test-src/regexp/properties/RegExpEmptyTest.cpp
+++ b/alib2algo/test-src/regexp/properties/RegExpEmptyTest.cpp
@@ -6,6 +6,7 @@
 
 #include <factory/StringDataFactory.hpp>
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( RegExpEmptyTest, "regexp" );
 CPPUNIT_TEST_SUITE_REGISTRATION( RegExpEmptyTest );
 
 void RegExpEmptyTest::setUp() {
diff --git a/alib2algo/test-src/regexp/properties/RegExpEpsilonTest.cpp b/alib2algo/test-src/regexp/properties/RegExpEpsilonTest.cpp
index 3af298b6abe00b83c5ec41a9c0e97f0999b19468..f1f6aa02a0d881ad0d1dc4ff2737c7a3b9da2dc5 100644
--- a/alib2algo/test-src/regexp/properties/RegExpEpsilonTest.cpp
+++ b/alib2algo/test-src/regexp/properties/RegExpEpsilonTest.cpp
@@ -4,6 +4,7 @@
 
 #include <factory/StringDataFactory.hpp>
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( RegExpEpsilonTest, "regexp" );
 CPPUNIT_TEST_SUITE_REGISTRATION( RegExpEpsilonTest );
 
 void RegExpEpsilonTest::setUp() {
diff --git a/alib2algo/test-src/regexp/simplify/RegExpOptimizeTest.cpp b/alib2algo/test-src/regexp/simplify/RegExpOptimizeTest.cpp
index ce170128e82a3e8e1bedc2adc89bbe0e36fb2c93..53e4772a9fda056973a50180dde35c5a0629c1b5 100644
--- a/alib2algo/test-src/regexp/simplify/RegExpOptimizeTest.cpp
+++ b/alib2algo/test-src/regexp/simplify/RegExpOptimizeTest.cpp
@@ -10,6 +10,7 @@
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 #define CPPUNIT_EXCLUSIVE_OR(x, y) CPPUNIT_ASSERT((!(x) && (y)) || ((x) && !(y)))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( RegExpOptimizeTest, "regexp" );
 CPPUNIT_TEST_SUITE_REGISTRATION( RegExpOptimizeTest );
 
 void RegExpOptimizeTest::setUp() {
diff --git a/alib2algo/test-src/regexp/toAutomaton/re2faTest.cpp b/alib2algo/test-src/regexp/toAutomaton/re2faTest.cpp
index 6357d9f191a6e5946ef0d56360e3b3fea5afd3e4..a1bc8b21333e6a0c6785fb12d56a0dd04a5b78eb 100644
--- a/alib2algo/test-src/regexp/toAutomaton/re2faTest.cpp
+++ b/alib2algo/test-src/regexp/toAutomaton/re2faTest.cpp
@@ -15,6 +15,7 @@
 #include "automaton/FSM/NFA.h"
 #include <factory/StringDataFactory.hpp>
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( re2faTest, "regexp" );
 CPPUNIT_TEST_SUITE_REGISTRATION( re2faTest );
 
 void re2faTest::setUp() {
diff --git a/alib2algo/test-src/regexp/transform/RegExpConcatenateTest.cpp b/alib2algo/test-src/regexp/transform/RegExpConcatenateTest.cpp
index 53779010c76372ba57f1236ce01a944d20ebea3a..2537ba7a6777a4f07d311466e2c222cfa14f94e3 100644
--- a/alib2algo/test-src/regexp/transform/RegExpConcatenateTest.cpp
+++ b/alib2algo/test-src/regexp/transform/RegExpConcatenateTest.cpp
@@ -6,6 +6,7 @@
 
 #include <factory/StringDataFactory.hpp>
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( RegExpConcatenateTest, "regexp" );
 CPPUNIT_TEST_SUITE_REGISTRATION( RegExpConcatenateTest );
 
 void RegExpConcatenateTest::setUp() {
diff --git a/alib2algo/test-src/regexp/transform/RegExpDerivationTest.cpp b/alib2algo/test-src/regexp/transform/RegExpDerivationTest.cpp
index e569d06b69823da32493f12349a579b31c92a437..490363f8853700e2d686c2944381e10d84722196 100644
--- a/alib2algo/test-src/regexp/transform/RegExpDerivationTest.cpp
+++ b/alib2algo/test-src/regexp/transform/RegExpDerivationTest.cpp
@@ -6,6 +6,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( RegExpDerivationTest, "regexp" );
 CPPUNIT_TEST_SUITE_REGISTRATION( RegExpDerivationTest );
 
 void RegExpDerivationTest::setUp() {
diff --git a/alib2algo/test-src/regexp/transform/RegExpIntegralTest.cpp b/alib2algo/test-src/regexp/transform/RegExpIntegralTest.cpp
index 41c55c5d5a7ed83449cd6e8d7eb02b9391d14fdc..01e07b2ca4af94d32895be4039832fcceecc5732 100644
--- a/alib2algo/test-src/regexp/transform/RegExpIntegralTest.cpp
+++ b/alib2algo/test-src/regexp/transform/RegExpIntegralTest.cpp
@@ -6,6 +6,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( RegExpIntegralTest, "regexp" );
 CPPUNIT_TEST_SUITE_REGISTRATION( RegExpIntegralTest );
 
 void RegExpIntegralTest::setUp() {
diff --git a/alib2algo/test-src/string/compare/compareTest.cpp b/alib2algo/test-src/string/compare/compareTest.cpp
index 957247a971c240ac8c68dab58eb47ccfee620c5a..7d1e4af54361b8dbc1606c4ab19f7cc5156f8693 100644
--- a/alib2algo/test-src/string/compare/compareTest.cpp
+++ b/alib2algo/test-src/string/compare/compareTest.cpp
@@ -9,6 +9,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( compareTest, "string" );
 CPPUNIT_TEST_SUITE_REGISTRATION( compareTest );
 
 void compareTest::setUp() {
diff --git a/alib2algo/test-src/stringology/exact/borderArrayTest.cpp b/alib2algo/test-src/stringology/exact/borderArrayTest.cpp
index ca607cdb1091b0a99c57a7c3459005d647207341..65aa2ab1743484cad2c7d72cc0286bf098cd819e 100644
--- a/alib2algo/test-src/stringology/exact/borderArrayTest.cpp
+++ b/alib2algo/test-src/stringology/exact/borderArrayTest.cpp
@@ -5,6 +5,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( borderArrayTest, "stringology" );
 CPPUNIT_TEST_SUITE_REGISTRATION( borderArrayTest );
 
 void borderArrayTest::setUp() {
diff --git a/alib2data/test-src/alphabet/SymbolTest.cpp b/alib2data/test-src/alphabet/SymbolTest.cpp
index bc4f18883b71101353e0d29c17503c7e844a3599..3bb705d236ec9372e6f1a31ec381d773bb60dcb4 100644
--- a/alib2data/test-src/alphabet/SymbolTest.cpp
+++ b/alib2data/test-src/alphabet/SymbolTest.cpp
@@ -14,6 +14,7 @@
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 #define CPPUNIT_EXCLUSIVE_OR(x, y) CPPUNIT_ASSERT((!(x) && (y)) || ((x) && !(y)))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( SymbolTest, "alphabet" );
 CPPUNIT_TEST_SUITE_REGISTRATION( SymbolTest );
 
 void SymbolTest::setUp() {
diff --git a/alib2data/test-src/automaton/AutomatonTest.cpp b/alib2data/test-src/automaton/AutomatonTest.cpp
index 7d54d3b6e68cb0f2ba23c691b304272b445dbbd0..d631faa845b46d5981862d583f15660addb6529a 100644
--- a/alib2data/test-src/automaton/AutomatonTest.cpp
+++ b/alib2data/test-src/automaton/AutomatonTest.cpp
@@ -22,6 +22,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( AutomatonTest, "automaton" );
 CPPUNIT_TEST_SUITE_REGISTRATION( AutomatonTest );
 
 void AutomatonTest::setUp() {
diff --git a/alib2data/test-src/container/ContainerTest.cpp b/alib2data/test-src/container/ContainerTest.cpp
index a1dcab797e825990f145c6272111a794d580d436..54ba122a736d574e9c5956f3f2d752428c6b5730 100644
--- a/alib2data/test-src/container/ContainerTest.cpp
+++ b/alib2data/test-src/container/ContainerTest.cpp
@@ -13,6 +13,7 @@
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 #define CPPUNIT_EXCLUSIVE_OR(x, y) CPPUNIT_ASSERT((!(x) && (y)) || ((x) && !(y)))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ContainerTest, "container" );
 CPPUNIT_TEST_SUITE_REGISTRATION( ContainerTest );
 
 void ContainerTest::setUp() {
diff --git a/alib2data/test-src/grammar/GrammarTest.cpp b/alib2data/test-src/grammar/GrammarTest.cpp
index 61f255dfe0cd8d9a2776d024c7d29b8855fb5d69..c85c7d4f6931184aaa4a24933031a31f3124bf6d 100644
--- a/alib2data/test-src/grammar/GrammarTest.cpp
+++ b/alib2data/test-src/grammar/GrammarTest.cpp
@@ -13,6 +13,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( GrammarTest, "grammar" );
 CPPUNIT_TEST_SUITE_REGISTRATION( GrammarTest );
 
 void GrammarTest::setUp() {
diff --git a/alib2data/test-src/graph/GraphElementsTest.cpp b/alib2data/test-src/graph/GraphElementsTest.cpp
index 0910803002eccf6f24151b3ca80258854ff87bd0..6cf5a49548561405ae2c652f747d33a3627a663b 100644
--- a/alib2data/test-src/graph/GraphElementsTest.cpp
+++ b/alib2data/test-src/graph/GraphElementsTest.cpp
@@ -6,6 +6,7 @@
 #include "factory/XmlDataFactory.hpp"
 #include "factory/StringDataFactory.hpp"
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( GraphElementsTest, "graph" );
 CPPUNIT_TEST_SUITE_REGISTRATION(GraphElementsTest);
 
 void GraphElementsTest::testCopyConstruct()
diff --git a/alib2data/test-src/graph/GraphTest.cpp b/alib2data/test-src/graph/GraphTest.cpp
index f39266d61acc9703e15bbef2ec3844989dd40cd3..792acf135ca9a9d6062f7a1ac5ec79612a3854e3 100644
--- a/alib2data/test-src/graph/GraphTest.cpp
+++ b/alib2data/test-src/graph/GraphTest.cpp
@@ -14,6 +14,7 @@
 	std::cout << "ADJACENCY_MATRIX" << std::endl; \
 	t(graph::REPRESENTATION::ADJACENCY_MATRIX)
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(GraphTest, "graph" );
 CPPUNIT_TEST_SUITE_REGISTRATION(GraphTest);
 
 void GraphTest::testCopyConstruct()
diff --git a/alib2data/test-src/label/LabelTest.cpp b/alib2data/test-src/label/LabelTest.cpp
index 226660e9e5b619280ae924225ac196fb7219f802..1bad0384c6e905b39a22f30a20f89f20d5560728 100644
--- a/alib2data/test-src/label/LabelTest.cpp
+++ b/alib2data/test-src/label/LabelTest.cpp
@@ -17,6 +17,7 @@
 
 #define CPPUNIT_EXCLUSIVE_OR(x, y) CPPUNIT_ASSERT((!(x) && (y)) || ((x) && !(y)))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( LabelTest, "label" );
 CPPUNIT_TEST_SUITE_REGISTRATION( LabelTest );
 
 void LabelTest::setUp() {
diff --git a/alib2data/test-src/main.cpp b/alib2data/test-src/main.cpp
index 698cd0fc74ca3bc651d37ec62e372c8fa7802efa..3114b5c8f21a102603ba529cf4c1f6f8a2c684ec 100644
--- a/alib2data/test-src/main.cpp
+++ b/alib2data/test-src/main.cpp
@@ -1,4 +1,5 @@
-//#include "stdafx.h"
+#include <tclap/CmdLine.h>
+
 #include <cppunit/CompilerOutputter.h>
 #include <cppunit/extensions/TestFactoryRegistry.h>
 #include <cppunit/ui/text/TestRunner.h>
@@ -13,6 +14,8 @@
 #include <cppunit/SourceLine.h>
 #include <cppunit/Exception.h>
 
+#include <exception/AlibException.h>
+
 CPPUNIT_NS_BEGIN
 
 class CPPUNIT_API TestProgressListener : public TestListener
@@ -92,33 +95,60 @@ void TestProgressListener::printResults() const {
 
 CPPUNIT_NS_END
 
-int main(int , char*[])
-{
-	CppUnit::TestResult controller;
-
-	CppUnit::TestResultCollector result;
-	controller.addListener( &result );
-
-	CppUnit::TestProgressListener progressListener;
-	controller.addListener( &progressListener );
-
-	// Get the top level suite from the registry
-	CppUnit::Test *suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest();
-
-	// Adds the test to the list of test to run
-	CppUnit::TextUi::TestRunner runner;
-	runner.addTest( suite );
-
-	// Change the default outputter to a compiler error format outputter
-	runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(), std::cerr ) );
-	// Run the tests.
-	runner.run( controller );
-
-	progressListener.printResults();
-
-	std::ofstream xmlFileResults("CppUnitTestResults.xml");
-	CppUnit::XmlOutputter xmlOut(&result, xmlFileResults);
-	xmlOut.write();
-
-	return progressListener.getResult();
+int main(int argc, char* argv[]) {
+	try {
+		TCLAP::CmdLine cmd("Main test binary.", ' ', "0.01");
+
+		TCLAP::MultiArg<std::string> testPath("p", "path", "test path", false, "string" );
+		cmd.add( testPath );
+
+		cmd.parse(argc, argv);
+
+		CppUnit::TestResult controller;
+
+		CppUnit::TestResultCollector result;
+		controller.addListener( &result );
+
+		CppUnit::TestProgressListener progressListener;
+		controller.addListener( &progressListener );
+
+		CppUnit::Test *suite = NULL;
+		if(testPath.getValue().size() == 0) {
+			// Get the top level suite from the registry
+			suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest();
+		} else if(testPath.getValue().size() == 1) {
+			suite = CppUnit::TestFactoryRegistry::getRegistry(testPath.getValue()[0]).makeTest();
+		} else {
+			throw TCLAP::ArgException("too many arguments in path switch");
+		}
+
+		// Adds the test to the list of test to run
+		CppUnit::TextUi::TestRunner runner;
+		runner.addTest( suite );
+
+		// Change the default outputter to a compiler error format outputter
+		runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(), std::cerr ) );
+		// Run the tests.
+		runner.run( controller );
+
+		progressListener.printResults();
+
+		std::ofstream xmlFileResults("CppUnitTestResults.xml");
+		CppUnit::XmlOutputter xmlOut(&result, xmlFileResults);
+		xmlOut.write();
+
+		return progressListener.getResult();
+	} catch(const exception::AlibException& exception) {
+		std::cerr << exception.getCause() << std::endl;
+		return 1;
+	} catch(const TCLAP::ArgException& exception) {
+		std::cerr << exception.error() << std::endl;
+		return 2;
+	} catch (const std::exception& exception) {
+		std::cerr << "Exception caught: " << exception.what() << std::endl;
+		return 3;
+	} catch(...) {
+		std::cerr << "Unknown exception caught." << std::endl;
+		return 127;
+	}
 }
diff --git a/alib2data/test-src/primitive/PrimitiveTest.cpp b/alib2data/test-src/primitive/PrimitiveTest.cpp
index e64cf8f66aa384a2bf2f6cc1ae3acf1aba3454f1..2ea33701f430c817a5b7f1fda9aadeeec44f3d2c 100644
--- a/alib2data/test-src/primitive/PrimitiveTest.cpp
+++ b/alib2data/test-src/primitive/PrimitiveTest.cpp
@@ -12,6 +12,7 @@
 
 #define CPPUNIT_EXCLUSIVE_OR(x, y) CPPUNIT_ASSERT((!(x) && (y)) || ((x) && !(y)))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( PrimitiveTest, "primitive" );
 CPPUNIT_TEST_SUITE_REGISTRATION( PrimitiveTest );
 
 void PrimitiveTest::setUp() {
diff --git a/alib2data/test-src/regexp/RegExpTest.cpp b/alib2data/test-src/regexp/RegExpTest.cpp
index 95d268a08fb0c13450e0ccacbdc7339f128f1dc5..d8ed5f7d589d7100c1b9210dff118cbb4d2d9f39 100644
--- a/alib2data/test-src/regexp/RegExpTest.cpp
+++ b/alib2data/test-src/regexp/RegExpTest.cpp
@@ -12,6 +12,7 @@
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 #define CPPUNIT_EXCLUSIVE_OR(x, y) CPPUNIT_ASSERT((!(x) && (y)) || ((x) && !(y)))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( RegExpTest, "regexp" );
 CPPUNIT_TEST_SUITE_REGISTRATION( RegExpTest );
 
 void RegExpTest::setUp() {
diff --git a/alib2data/test-src/sax/SaxTest.cpp b/alib2data/test-src/sax/SaxTest.cpp
index d3cc283908eee285aeeede6d7c53b45c7d6c32c1..db2dff393c4588260e135a570a0e569d03322f1d 100644
--- a/alib2data/test-src/sax/SaxTest.cpp
+++ b/alib2data/test-src/sax/SaxTest.cpp
@@ -7,6 +7,7 @@
 
 #define CPPUNIT_EXCLUSIVE_OR(x, y) CPPUNIT_ASSERT((!(x) && (y)) || ((x) && !(y)))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( SaxTest, "sax" );
 CPPUNIT_TEST_SUITE_REGISTRATION( SaxTest );
 
 void SaxTest::setUp() {
diff --git a/alib2data/test-src/std/StdSet.cpp b/alib2data/test-src/std/StdSet.cpp
index b67f5013a9bf1c5409830d8c18c7a4f2e542e8b8..8fc9e8ed9f408f232c3c80d74373e4c7486a79eb 100644
--- a/alib2data/test-src/std/StdSet.cpp
+++ b/alib2data/test-src/std/StdSet.cpp
@@ -4,6 +4,7 @@
 
 #include "alphabet/Symbol.h"
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( StdSet, "std" );
 CPPUNIT_TEST_SUITE_REGISTRATION( StdSet );
 
 void StdSet::setUp() {
diff --git a/alib2data/test-src/std/StdTest.cpp b/alib2data/test-src/std/StdTest.cpp
index 6fd3821ee4d86f571e0eeb7198ac34e19eecb2f3..d64d5fb65c9acff5c12c2077c31e1fa864909292 100644
--- a/alib2data/test-src/std/StdTest.cpp
+++ b/alib2data/test-src/std/StdTest.cpp
@@ -2,6 +2,7 @@
 #include "std/variant.hpp"
 #include <set>
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( StdTest, "std" );
 CPPUNIT_TEST_SUITE_REGISTRATION( StdTest );
 
 void StdTest::setUp() {
diff --git a/alib2data/test-src/std/StdTestHexavigesimal.cpp b/alib2data/test-src/std/StdTestHexavigesimal.cpp
index e2898dc08596a52f5e838ec39a57a19850f0f013..48d0d644b3319461b5c7f9b51264238b813ae61f 100644
--- a/alib2data/test-src/std/StdTestHexavigesimal.cpp
+++ b/alib2data/test-src/std/StdTestHexavigesimal.cpp
@@ -1,6 +1,7 @@
 #include "StdTestHexavigesimal.h"
 #include "std/hexavigesimal.h"
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( StdTestHexavigesimal, "std" );
 CPPUNIT_TEST_SUITE_REGISTRATION( StdTestHexavigesimal );
 
 void StdTestHexavigesimal::setUp() {
diff --git a/alib2data/test-src/std/StdVisitorTest.cpp b/alib2data/test-src/std/StdVisitorTest.cpp
index 8496191a404c40d78710a0681f0d0b5945ebc5cd..7963d0820c1dcb403c2cc2e5a0bfb8410d8809ce 100644
--- a/alib2data/test-src/std/StdVisitorTest.cpp
+++ b/alib2data/test-src/std/StdVisitorTest.cpp
@@ -4,6 +4,7 @@
 #include <set>
 #include <string>
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( StdVisitorTest, "std" );
 CPPUNIT_TEST_SUITE_REGISTRATION( StdVisitorTest );
 
 void StdVisitorTest::setUp() {
diff --git a/alib2data/test-src/std/TypeInfoTest.cpp b/alib2data/test-src/std/TypeInfoTest.cpp
index 0ff9b00754aa9254ade86853cbe548a88cb4826f..da7a5c11faf9989385da20757752ffcba4daed67 100644
--- a/alib2data/test-src/std/TypeInfoTest.cpp
+++ b/alib2data/test-src/std/TypeInfoTest.cpp
@@ -4,6 +4,7 @@
 
 #define CPPUNIT_EXCLUSIVE_OR(x, y) CPPUNIT_ASSERT((!(x) && (y)) || ((x) && !(y)))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TypeInfoTest, "std" );
 CPPUNIT_TEST_SUITE_REGISTRATION( TypeInfoTest );
 
 void TypeInfoTest::setUp() {
diff --git a/alib2data/test-src/string/StringTest.cpp b/alib2data/test-src/string/StringTest.cpp
index 00bdc5797a287ff6c68bedd354e488273514cc20..d5bcc9a1c0ebd405349454839963809aa5a0aafb 100644
--- a/alib2data/test-src/string/StringTest.cpp
+++ b/alib2data/test-src/string/StringTest.cpp
@@ -18,6 +18,7 @@
 
 #define CPPUNIT_IMPLY(x, y) CPPUNIT_ASSERT(!(x) || (y))
 
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( StringTest, "string" );
 CPPUNIT_TEST_SUITE_REGISTRATION( StringTest );
 
 void StringTest::setUp() {