diff --git a/apps/segmentrouting/src/test/java/org/onosproject/segmentrouting/config/SegmentRoutingAppConfigTest.java b/apps/segmentrouting/src/test/java/org/onosproject/segmentrouting/config/SegmentRoutingAppConfigTest.java
index a43c2ba..1c9abd7 100644
--- a/apps/segmentrouting/src/test/java/org/onosproject/segmentrouting/config/SegmentRoutingAppConfigTest.java
+++ b/apps/segmentrouting/src/test/java/org/onosproject/segmentrouting/config/SegmentRoutingAppConfigTest.java
@@ -30,6 +30,7 @@
 import org.onosproject.net.config.ConfigApplyDelegate;
 import org.onosproject.segmentrouting.SegmentRoutingManager;
 
+import java.io.InputStream;
 import java.util.Optional;
 import java.util.Set;
 
@@ -45,29 +46,7 @@
 
     private SegmentRoutingAppConfig config;
     private SegmentRoutingAppConfig invalidConfig;
-    private static final String JSON_STRING = "{" +
-            "\"vRouterMacs\" : [" +
-            "    \"00:00:00:00:00:01\"," +
-            "    \"00:00:00:00:00:02\"" +
-            "]," +
-            "\"vRouterId\" : \"of:1\"," +
-            "\"suppressSubnet\" : [" +
-            "    \"of:1/1\"," +
-            "    \"of:1/2\"" +
-            "]," +
-            "\"suppressHost\" : [" +
-            "    \"of:1/1\"," +
-            "    \"of:1/2\"" +
-            "]}";
-    private static final String INVALID_JSON_STRING = "{" +
-            "\"vRouterMacs\" : [" +
-            "    \"00:00:00:00:00:01\"," +
-            "    \"00:00:00:00:00:02\"" +
-            "]," +
-            "\"suppressSubnet\" : [" +
-            "    \"of:1/1\"," +
-            "    \"wrongport\"" +
-            "]}";
+
     private static final MacAddress ROUTER_MAC_1 = MacAddress.valueOf("00:00:00:00:00:01");
     private static final MacAddress ROUTER_MAC_2 = MacAddress.valueOf("00:00:00:00:00:02");
     private static final MacAddress ROUTER_MAC_3 = MacAddress.valueOf("00:00:00:00:00:03");
@@ -84,11 +63,16 @@
      */
     @Before
     public void setUp() throws Exception {
+        InputStream jsonStream = SegmentRoutingAppConfigTest.class
+                .getResourceAsStream("/sr-app-config.json");
+        InputStream invalidJsonStream = SegmentRoutingAppConfigTest.class
+                .getResourceAsStream("/sr-app-config-invalid.json");
+
         ApplicationId subject = APP_ID;
         String key = SegmentRoutingManager.SR_APP_ID;
         ObjectMapper mapper = new ObjectMapper();
-        JsonNode jsonNode = mapper.readTree(JSON_STRING);
-        JsonNode invalidJsonNode = mapper.readTree(INVALID_JSON_STRING);
+        JsonNode jsonNode = mapper.readTree(jsonStream);
+        JsonNode invalidJsonNode = mapper.readTree(invalidJsonStream);
         ConfigApplyDelegate delegate = new MockDelegate();
 
         config = new SegmentRoutingAppConfig();
diff --git a/apps/segmentrouting/src/test/java/org/onosproject/segmentrouting/config/SegmentRoutingDeviceConfigTest.java b/apps/segmentrouting/src/test/java/org/onosproject/segmentrouting/config/SegmentRoutingDeviceConfigTest.java
index fd661b6..58fea85 100644
--- a/apps/segmentrouting/src/test/java/org/onosproject/segmentrouting/config/SegmentRoutingDeviceConfigTest.java
+++ b/apps/segmentrouting/src/test/java/org/onosproject/segmentrouting/config/SegmentRoutingDeviceConfigTest.java
@@ -26,6 +26,7 @@
 import org.onosproject.net.config.Config;
 import org.onosproject.net.config.ConfigApplyDelegate;
 
+import java.io.InputStream;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -45,16 +46,8 @@
 
     @Before
     public void setUp() throws Exception {
-        String jsonString = "{" +
-                "\"name\" : \"Leaf-R1\"," +
-                "\"nodeSid\" : 101," +
-                "\"routerIp\" : \"10.0.1.254\"," +
-                "\"routerMac\" : \"00:00:00:00:01:80\"," +
-                "\"isEdgeRouter\" : true," +
-                "\"adjacencySids\" : [" +
-                "    { \"adjSid\" : 100, \"ports\" : [2, 3] }," +
-                "    { \"adjSid\" : 200, \"ports\" : [4, 5] }" +
-                "]}";
+        InputStream jsonStream = SegmentRoutingDeviceConfigTest.class
+                .getResourceAsStream("/sr-device-config.json");
 
         adjacencySids1 = new HashMap<>();
         Set<Integer> ports1 = new HashSet<>();
@@ -74,7 +67,7 @@
         DeviceId subject = DeviceId.deviceId("of:0000000000000001");
         String key = "segmentrouting";
         ObjectMapper mapper = new ObjectMapper();
-        JsonNode jsonNode = mapper.readTree(jsonString);
+        JsonNode jsonNode = mapper.readTree(jsonStream);
         ConfigApplyDelegate delegate = new MockDelegate();
 
         config = new SegmentRoutingDeviceConfig();
diff --git a/apps/segmentrouting/src/test/resources/sr-app-config-invalid.json b/apps/segmentrouting/src/test/resources/sr-app-config-invalid.json
new file mode 100644
index 0000000..e2851d5
--- /dev/null
+++ b/apps/segmentrouting/src/test/resources/sr-app-config-invalid.json
@@ -0,0 +1,15 @@
+{
+  "vRouterMacs" : [
+      "00:00:00:00:00:01",
+      "00:00:00:00:00:02"
+  ],
+  "vRouterId" : "of:1",
+  "suppressSubnet" : [
+      "of:1/1",
+      "of:1/2"
+  ],
+  "suppressHost" : [
+      "of:1/1",
+      "wrongPort"
+  ]
+}
diff --git a/apps/segmentrouting/src/test/resources/sr-app-config.json b/apps/segmentrouting/src/test/resources/sr-app-config.json
new file mode 100644
index 0000000..9e8b33e
--- /dev/null
+++ b/apps/segmentrouting/src/test/resources/sr-app-config.json
@@ -0,0 +1,15 @@
+{
+  "vRouterMacs" : [
+      "00:00:00:00:00:01",
+      "00:00:00:00:00:02"
+  ],
+  "vRouterId" : "of:1",
+  "suppressSubnet" : [
+      "of:1/1",
+      "of:1/2"
+  ],
+  "suppressHost" : [
+      "of:1/1",
+      "of:1/2"
+  ]
+}
diff --git a/apps/segmentrouting/src/test/resources/sr-device-config.json b/apps/segmentrouting/src/test/resources/sr-device-config.json
new file mode 100644
index 0000000..133f6d4
--- /dev/null
+++ b/apps/segmentrouting/src/test/resources/sr-device-config.json
@@ -0,0 +1,11 @@
+{
+  "name" : "Leaf-R1",
+  "nodeSid" : 101,
+  "routerIp" : "10.0.1.254",
+  "routerMac" : "00:00:00:00:01:80",
+  "isEdgeRouter" : true,
+  "adjacencySids" : [
+    { "adjSid" : 100, "ports" : [2, 3] },
+    { "adjSid" : 200, "ports" : [4, 5] }
+  ]
+}
\ No newline at end of file
