diff --git a/test/utest.cpp b/test/utest.cpp
index 4572c55..6303335 100644
--- a/test/utest.cpp
+++ b/test/utest.cpp
@@ -24,6 +24,8 @@
 using namespace openpower::targeting;
 namespace fs = std::experimental::filesystem;
 
+ProcedureMap Registration::procedures;
+
 constexpr auto masterDir = "/tmp";
 
 class TargetingTest : public ::testing::Test
@@ -39,15 +41,20 @@
             auto path = mkdtemp(dir);
             assert(path != nullptr);
 
-            _directory = path;
+            _slaveBaseDir = path;
+
+            _slaveDir = _slaveBaseDir / "hub@00";
+            fs::create_directory(_slaveDir);
         }
 
         virtual void TearDown()
         {
-            fs::remove_all(_directory);
+            fs::remove_all(_slaveDir);
+            fs::remove_all(_slaveBaseDir);
         }
 
-        std::string _directory;
+        fs::path _slaveBaseDir;
+        fs::path _slaveDir;
 };
 
 
@@ -56,7 +63,7 @@
 
     //Test that we always create the first Target
     {
-        Targeting targets{masterDir, _directory};
+        Targeting targets{masterDir, _slaveDir};
         ASSERT_EQ(targets.size(), 1);
 
         auto t = targets.begin();
@@ -69,12 +76,12 @@
     //Test that we can create multiple Targets
     {
         //make some fake slave entries
-        std::ofstream(_directory + "/slave@01:00");
-        std::ofstream(_directory + "/slave@02:00");
-        std::ofstream(_directory + "/slave@03:00");
-        std::ofstream(_directory + "/slave@04:00");
+        std::ofstream(_slaveDir / "slave@01:00");
+        std::ofstream(_slaveDir / "slave@02:00");
+        std::ofstream(_slaveDir / "slave@03:00");
+        std::ofstream(_slaveDir / "slave@04:00");
 
-        Targeting targets{masterDir, _directory};
+        Targeting targets{masterDir, _slaveDir};
 
         ASSERT_EQ(targets.size(), 5);
 
@@ -82,20 +89,24 @@
 
         for (const auto& t : targets)
         {
-            std::ostringstream path;
+            fs::path path;
 
             ASSERT_EQ(t->getPos(), i);
 
             if (0 == i)
             {
-                path << masterDir;
+                path = masterDir;
             }
             else
             {
-                path << _directory << "/slave@0" << i << ":00/raw";
+                std::ostringstream subdir;
+                subdir << "slave@0" << i << ":00/raw";
+
+                path = _slaveDir;
+                path /= subdir.str();
             }
 
-            ASSERT_EQ(t->getCFAMPath(), path.str());
+            ASSERT_EQ(t->getCFAMPath(), path);
             i++;
         }
     }
