diff --git a/org.eclipse.gemini.web.core/src/test/java/org/eclipse/gemini/web/internal/url/DirTransformerTests.java b/org.eclipse.gemini.web.core/src/test/java/org/eclipse/gemini/web/internal/url/DirTransformerTests.java
index d6f4c97..e82254c 100644
--- a/org.eclipse.gemini.web.core/src/test/java/org/eclipse/gemini/web/internal/url/DirTransformerTests.java
+++ b/org.eclipse.gemini.web.core/src/test/java/org/eclipse/gemini/web/internal/url/DirTransformerTests.java
@@ -168,13 +168,15 @@
 
         File[] sourceFiles = source.listFiles();
         File[] destinationFiles = destination.listFiles();
-        assertEquals(sourceFiles.length, destinationFiles.length);
+        if (sourceFiles != null && destinationFiles != null) {
+            assertEquals(sourceFiles.length, destinationFiles.length);
 
-        for (int i = 0; i < sourceFiles.length; i++) {
-            File sourceFile = sourceFiles[i];
-            File destinationFile = destinationFiles[i];
-            assertEquals(sourceFile.getName(), destinationFile.getName());
-            assertEquals(sourceFile.length(), destinationFile.length());
+            for (int i = 0; i < sourceFiles.length; i++) {
+                File sourceFile = sourceFiles[i];
+                File destinationFile = destinationFiles[i];
+                assertEquals(sourceFile.getName(), destinationFile.getName());
+                assertEquals(sourceFile.length(), destinationFile.length());
+            }
         }
     }
 
diff --git a/org.eclipse.gemini.web.test/src/test/java/org/eclipse/gemini/web/test/tomcat/TomcatServletContainerTests.java b/org.eclipse.gemini.web.test/src/test/java/org/eclipse/gemini/web/test/tomcat/TomcatServletContainerTests.java
index 7b4f273..445c721 100644
--- a/org.eclipse.gemini.web.test/src/test/java/org/eclipse/gemini/web/test/tomcat/TomcatServletContainerTests.java
+++ b/org.eclipse.gemini.web.test/src/test/java/org/eclipse/gemini/web/test/tomcat/TomcatServletContainerTests.java
@@ -399,7 +399,11 @@
         this.container.startWebApplication(handle);
         try {
             ServletContext context = handle.getServletContext();
-            long lm = context.getResource("/META-INF/").openConnection().getLastModified();
+            URL resource = context.getResource("/META-INF/");
+            long lm = 0;
+            if (resource != null) {
+                lm = resource.openConnection().getLastModified();
+            }
             assertTrue(lm != 0);
         } finally {
             this.container.stopWebApplication(handle);
diff --git a/test-bundles/customizer-bundle/src/main/java/org/eclipse/gemini/web/BundleJarScanner.java b/test-bundles/customizer-bundle/src/main/java/org/eclipse/gemini/web/BundleJarScanner.java
index 1157648..3e342eb 100755
--- a/test-bundles/customizer-bundle/src/main/java/org/eclipse/gemini/web/BundleJarScanner.java
+++ b/test-bundles/customizer-bundle/src/main/java/org/eclipse/gemini/web/BundleJarScanner.java
@@ -46,7 +46,9 @@
     @Override
     public void scan(ServletContext servletContext, ClassLoader classLoader, JarScannerCallback jarScannerCallback, Set<String> jarsToSkip) {
         Bundle bundle = FrameworkUtil.getBundle(this.getClass());
-        scanBundle(bundle, jarScannerCallback);
+        if (bundle != null) {
+            scanBundle(bundle, jarScannerCallback);
+        }
     }
 
     private void scanBundle(Bundle bundle, JarScannerCallback callback) {
diff --git a/test-bundles/customizer-bundle/src/main/java/org/eclipse/gemini/web/BundleServletContainerInitializer.java b/test-bundles/customizer-bundle/src/main/java/org/eclipse/gemini/web/BundleServletContainerInitializer.java
index 90c1861..cbe03ce 100755
--- a/test-bundles/customizer-bundle/src/main/java/org/eclipse/gemini/web/BundleServletContainerInitializer.java
+++ b/test-bundles/customizer-bundle/src/main/java/org/eclipse/gemini/web/BundleServletContainerInitializer.java
@@ -28,7 +28,9 @@
     @Override
     public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException {
         ServletRegistration servletRegistration = ctx.addServlet("CustomServlet", new CustomServlet());
-        servletRegistration.addMapping("/CustomServlet");
+        if (servletRegistration != null) {
+            servletRegistration.addMapping("/CustomServlet");
+        }
     }
 
 }
