diff --git a/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/AAIClientRESTExecutorTest.java b/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/AAIClientRESTExecutorTest.java
index 9905991..b0272f5 100644
--- a/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/AAIClientRESTExecutorTest.java
+++ b/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/AAIClientRESTExecutorTest.java
@@ -6,6 +6,7 @@
 
 import org.junit.BeforeClass;
 import org.junit.Test;
+import static org.junit.Assert.assertNotNull;
 
 public class AAIClientRESTExecutorTest {
 
@@ -35,6 +36,7 @@
         } catch (AAIServiceException e) {
         }
         assert(true);
+        assertNotNull(nameValues);
     }
 
     @Test
@@ -47,6 +49,7 @@
         } catch (AAIServiceException e) {
         }
         assert(true);
+        assertNotNull(nameValues);
     }
 
     @Test
@@ -59,6 +62,7 @@
         } catch (AAIServiceException e) {
         }
         assert(true);
+        assertNotNull(nameValues);
     }
 
     @Test
@@ -71,6 +75,7 @@
         } catch (AAIServiceException e) {
         }
         assert(true);
+        assertNotNull(nameValues);
     }
 
     @Test
@@ -83,6 +88,7 @@
         } catch (AAIServiceException e) {
         }
         assert(true);
+        assertNotNull(nameValues);
     }
 
 
diff --git a/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/ActionUpdateTest.java b/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/ActionUpdateTest.java
index 607182e..64f9b45 100755
--- a/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/ActionUpdateTest.java
+++ b/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/ActionUpdateTest.java
@@ -19,6 +19,7 @@
     public void setActionData() throws Exception {
         final Action resolver = new Action();
         resolver.setActionData( new ArrayList<ActionDatum>());
+        assertNotNull(resolver);
     }
 
     @Test
diff --git a/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/GenericVnfTest.java b/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/GenericVnfTest.java
index f5339c2..f0a33fd 100755
--- a/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/GenericVnfTest.java
+++ b/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/GenericVnfTest.java
@@ -105,12 +105,14 @@
             data.put("encrypted-access-flag","true");
 
             QueryStatus resp = client.save("generic-vnf", false, false, "generic-vnf.vnf-id = '"+uuid+"'", data, "aaidata", ctx);
+            assertNotNull(ctx);
 
         }
         catch (Throwable e)
         {
 
         }
+        ;
     }
 
     @Test
@@ -130,8 +132,7 @@
             assertTrue(response == QueryStatus.SUCCESS);
             LOG.info("AAIResponse: " + response.toString());
         }
-        catch (Exception e)
-        {
+        catch (Exception e) {
             LOG.error("Caught exception", e);
             fail("Caught exception");
         }
@@ -155,7 +156,7 @@
             data.put("encrypted-access-flag","true");
 
             QueryStatus resp = client.update("generic-vnf", "generic-vnf.vnf-id = '"+uuid+"'", data, "aaidata", ctx);
-
+            assertNotNull(uuid);
         }
         catch (Throwable e)
         {
diff --git a/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/NodesQueryRequestTest.java b/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/NodesQueryRequestTest.java
index 33b3839..e52f1de 100644
--- a/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/NodesQueryRequestTest.java
+++ b/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/NodesQueryRequestTest.java
@@ -40,6 +40,7 @@
 
         try {
             URL url = request.getRequestUrl("GET", null);
+            assertNotNull(url);
         } catch (Exception exc) {
         }
         assert(true);
diff --git a/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/PathCreationTest.java b/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/PathCreationTest.java
index f9ec9f4..098414f 100755
--- a/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/PathCreationTest.java
+++ b/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/PathCreationTest.java
@@ -22,6 +22,7 @@
 package org.onap.ccsdk.sli.adaptors.aai;
 
 import static org.junit.Assert.fail;
+import static org.junit.Assert.assertNotNull;
 
 import java.io.File;
 import java.io.FileReader;
@@ -135,6 +136,8 @@
             URL url = request.getRequestUrl("GET", null);
             url.getPath();
             LOG.info("Received response");
+            assertNotNull(nameValues);
+
         } catch(Exception exc) {
             LOG.info("Caught exception", exc);
         }
@@ -196,5 +199,6 @@
             }
         }
         LOG.info(nameValues.toString());
+        assertNotNull(nameValues);
     }
 }
diff --git a/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/RegressionTest.java b/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/RegressionTest.java
index 0e81e5b..eb8dbc4 100755
--- a/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/RegressionTest.java
+++ b/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/RegressionTest.java
@@ -121,6 +121,7 @@
 			QueryStatus resp = client.save("connector", false, false, "resource-instance-id = '12345'", data, "aaidata", ctx);
 
 			LOG.info("AAIResponse: " + resp.toString());
+			assertNotNull(ctx);
 		}
 		catch (Exception e)
 		{
@@ -158,6 +159,7 @@
 			QueryStatus resp = client.save("connector", false, false, "resource-instance-id = '11012345'", data, "aaidata", ctx);
 
 			LOG.info("AAIResponse: " + resp.toString());
+			assertNotNull(ctx);
 		}
 		catch (Exception e)
 		{
@@ -210,6 +212,7 @@
 			QueryStatus resp = client.save("logical-link", false, false, "link-name = '1252541'", data, "aaidata", ctx);
 
 			LOG.info("AAIResponse: " + resp.toString());
+			assertNotNull(data);
 		}
 		catch (Exception e)
 		{
@@ -241,6 +244,7 @@
 			QueryStatus resp = client.save("virtual-data-center", false, false, "vdc-id = '1252541'", data, "aaidata", ctx);
 
 			LOG.info("AAIResponse: " + resp.toString());
+			assertNotNull(data);
 		}
 		catch (Exception e)
 		{
@@ -408,6 +412,7 @@
 
 //			assertTrue(response == QueryStatus.SUCCESS);
 			LOG.info("AAIResponse: " + datum.toString());
+			assertNotNull(nameValues);
 		}
 		catch (Exception e)
 		{
diff --git a/mdsal-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/resource/mdsal/TestConfigResource.java b/mdsal-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/resource/mdsal/TestConfigResource.java
index a8f4d94..80563b9 100644
--- a/mdsal-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/resource/mdsal/TestConfigResource.java
+++ b/mdsal-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/resource/mdsal/TestConfigResource.java
@@ -5,6 +5,7 @@
 import static org.mockito.Mockito.mock;
 
 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
+import static org.junit.Assert.assertNotNull;
 
 public class TestConfigResource extends TestCase {
 
@@ -24,6 +25,7 @@
 		res.isAvailable("my-resource", "mykey", "pfx", ctx);
 		res.save("resource", false, false, null, null, null, ctx);
 		res.update("my-resource", "mykey", null, "pfx", ctx);
+		assertNotNull(res);
 	}
 
 }
diff --git a/mdsal-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/resource/mdsal/TestMdsalResourcePropertiesProviderImpl.java b/mdsal-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/resource/mdsal/TestMdsalResourcePropertiesProviderImpl.java
index 9af5b59..7f05d1e 100644
--- a/mdsal-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/resource/mdsal/TestMdsalResourcePropertiesProviderImpl.java
+++ b/mdsal-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/resource/mdsal/TestMdsalResourcePropertiesProviderImpl.java
@@ -27,6 +27,7 @@
 import java.util.Properties;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 
 public class TestMdsalResourcePropertiesProviderImpl {
 
@@ -57,6 +58,7 @@
         MdsalResourcePropertiesProviderImpl test = new MdsalResourcePropertiesProviderImpl();
 
         mdsal.determinePropertiesFile(test);
+        assertNotNull(test);
 
     }
 }
diff --git a/mdsal-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/resource/mdsal/TestOperationalResource.java b/mdsal-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/resource/mdsal/TestOperationalResource.java
index f5725e9..2e9798d 100644
--- a/mdsal-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/resource/mdsal/TestOperationalResource.java
+++ b/mdsal-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/resource/mdsal/TestOperationalResource.java
@@ -5,6 +5,7 @@
 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
 
 import junit.framework.TestCase;
+import static org.junit.Assert.assertNotNull;
 
 public class TestOperationalResource extends TestCase {
 
@@ -25,5 +26,6 @@
 		res.isAvailable("my-resource", "mykey", "pfx", ctx);
 		res.save("resource", false, false, null, null, null, ctx);
 		res.update("my-resource", "mykey", null, "pfx", ctx);
+		assertNotNull(restService);
 	}
 }
diff --git a/message-router/consumer/provider/src/test/java/org/onap/ccsdk/sli/adaptors/messagerouter/consumer/provider/impl/AbstractBaseConsumerTest.java b/message-router/consumer/provider/src/test/java/org/onap/ccsdk/sli/adaptors/messagerouter/consumer/provider/impl/AbstractBaseConsumerTest.java
index 99a4f3f..7587338 100644
--- a/message-router/consumer/provider/src/test/java/org/onap/ccsdk/sli/adaptors/messagerouter/consumer/provider/impl/AbstractBaseConsumerTest.java
+++ b/message-router/consumer/provider/src/test/java/org/onap/ccsdk/sli/adaptors/messagerouter/consumer/provider/impl/AbstractBaseConsumerTest.java
@@ -58,6 +58,7 @@
     public void callClose() throws Exception {
         DummyConsumer dummy = getAuthDummy();
         dummy.close();
+        assertNotNull(dummy);
     }
 
     @Test
diff --git a/resource-assignment/provider/src/test/java/jtest/org/onap/ccsdk/sli/adaptors/ra/TestLockHelper.java b/resource-assignment/provider/src/test/java/jtest/org/onap/ccsdk/sli/adaptors/ra/TestLockHelper.java
index 6564dc3..a9389b2 100644
--- a/resource-assignment/provider/src/test/java/jtest/org/onap/ccsdk/sli/adaptors/ra/TestLockHelper.java
+++ b/resource-assignment/provider/src/test/java/jtest/org/onap/ccsdk/sli/adaptors/ra/TestLockHelper.java
@@ -10,6 +10,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import static org.junit.Assert.assertNotNull;
 
 @RunWith(SpringJUnit4ClassRunner.class)
 @ContextConfiguration(locations = { "classpath:test-context.xml" })
@@ -34,6 +35,7 @@
         t1.join();
         t2.join();
         t3.join();
+        assertNotNull(t1);
     }
 
     private class LockThread extends Thread {
diff --git a/resource-assignment/provider/src/test/java/jtest/org/onap/ccsdk/sli/adaptors/ra/TestReserve.java b/resource-assignment/provider/src/test/java/jtest/org/onap/ccsdk/sli/adaptors/ra/TestReserve.java
index f42ef9c..b159127 100644
--- a/resource-assignment/provider/src/test/java/jtest/org/onap/ccsdk/sli/adaptors/ra/TestReserve.java
+++ b/resource-assignment/provider/src/test/java/jtest/org/onap/ccsdk/sli/adaptors/ra/TestReserve.java
@@ -28,6 +28,7 @@
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 import jtest.util.org.onap.ccsdk.sli.adaptors.ra.TestTable;
+import static org.junit.Assert.assertNotNull;
 
 @RunWith(SpringJUnit4ClassRunner.class)
 @ContextConfiguration(locations = { "classpath:test-context.xml" })
@@ -231,6 +232,7 @@
         rsList.forEach(r -> {
             StrUtil.info(log, r);
         });
+        assertNotNull(rsList);
 
     }
 
@@ -269,6 +271,7 @@
         rsList.forEach(r -> {
             StrUtil.info(log, r);
         });
+        assertNotNull(sd);
 
     }
 
@@ -316,6 +319,7 @@
         rsList.forEach(r -> {
             StrUtil.info(log, r);
         });
+        assertNotNull(rr);
 
     }
 
@@ -478,6 +482,7 @@
         rsList.forEach(r -> {
             StrUtil.info(log, r);
         });
+        assertNotNull(rsList);
 
     }
 
