diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/ChoiceCaseTranslatorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/ChoiceCaseTranslatorTest.java
index b872ab6..a9516eb 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/ChoiceCaseTranslatorTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/ChoiceCaseTranslatorTest.java
@@ -40,15 +40,14 @@
     @Test
     public void processChoiceCaseTranslator() throws IOException, ParserException {
 
-        String userDir = System.getProperty("user.dir");
         YangNode node = manager.getDataModel("src/test/resources/ChoiceCaseTranslator.yang");
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
-        yangPluginConfig.setCodeGenDir(userDir + "/target/ChoiceCaseTestGenFile/");
+        yangPluginConfig.setCodeGenDir("target/ChoiceCaseTestGenFile/");
 
         generateJavaCode(node, yangPluginConfig);
 
-        deleteDirectory(userDir + "/target/ChoiceCaseTestGenFile/");
+        deleteDirectory("target/ChoiceCaseTestGenFile/");
     }
     // TODO enhance the test cases, after having a framework of translator test.
 }
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/EnumTranslatorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/EnumTranslatorTest.java
index 6956851..c8784c8 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/EnumTranslatorTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/EnumTranslatorTest.java
@@ -41,15 +41,14 @@
     public void processEnumTranslator()
             throws IOException, ParserException {
 
-        String userDir = System.getProperty("user.dir");
         YangNode node = manager.getDataModel("src/test/resources/EnumTranslator.yang");
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
-        yangPluginConfig.setCodeGenDir(userDir + "/target/EnumTestGenFile/");
+        yangPluginConfig.setCodeGenDir("target/EnumTestGenFile/");
 
         generateJavaCode(node, yangPluginConfig);
 
-        deleteDirectory(userDir + "/target/EnumTestGenFile/");
+        deleteDirectory("target/EnumTestGenFile/");
     }
     // TODO enhance the test cases, after having a framework of translator test.
 }
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/NotificationTranslatorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/NotificationTranslatorTest.java
index 2801adf..ab98c76 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/NotificationTranslatorTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/NotificationTranslatorTest.java
@@ -41,15 +41,14 @@
     public void processUnionTranslator()
             throws IOException, ParserException {
 
-        String userDir = System.getProperty("user.dir");
         YangNode node = manager.getDataModel("src/test/resources/NotificationTest.yang");
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
-        yangPluginConfig.setCodeGenDir(userDir + "/target/NotificationTest/");
+        yangPluginConfig.setCodeGenDir("target/NotificationTest/");
 
         generateJavaCode(node, yangPluginConfig);
 
-        deleteDirectory(userDir + "/target/NotificationTest/");
+        deleteDirectory("target/NotificationTest/");
     }
 
     // TODO enhance the test cases, after having a framework of translator test.
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/RpcTranslatorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/RpcTranslatorTest.java
index 8f8b157..e34613d 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/RpcTranslatorTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/RpcTranslatorTest.java
@@ -41,15 +41,14 @@
     public void processRpcTranslator()
             throws IOException, ParserException {
 
-        String userDir = System.getProperty("user.dir");
         YangNode node = manager.getDataModel("src/test/resources/RpcTranslator.yang");
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
-        yangPluginConfig.setCodeGenDir(userDir + "/target/RpcTestGenFile/");
+        yangPluginConfig.setCodeGenDir("target/RpcTestGenFile/");
 
         generateJavaCode(node, yangPluginConfig);
 
-        deleteDirectory(userDir + "/target/RpcTestGenFile/");
+        deleteDirectory("target/RpcTestGenFile/");
     }
     // TODO enhance the test cases, after having a framework of translator test.
 }
diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/UnionTranslatorTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/UnionTranslatorTest.java
index 7682d19..b892edd 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/UnionTranslatorTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/UnionTranslatorTest.java
@@ -41,7 +41,6 @@
     public void processUnionTranslator()
             throws IOException, ParserException {
 
-        String userDir = System.getProperty("user.dir");
         YangNode node = manager.getDataModel("src/test/resources/UnionTranslator.yang");
 
         YangPluginConfig yangPluginConfig = new YangPluginConfig();
@@ -49,7 +48,7 @@
 
         generateJavaCode(node, yangPluginConfig);
 
-        deleteDirectory(userDir + "/target/UnionTestGenFile/");
+        deleteDirectory("target/UnionTestGenFile/");
     }
 
     // TODO enhance the test cases, after having a framework of translator test.
