SLING-2903 - launchpad/testing TestSuite fails with JUnit 4 tests 

Also fixed launchpad/testing-war to work with JUnit 4 tests.

git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1500984 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/test/java/org/apache/sling/launchpad/testing/LoggingSuite.java b/src/test/java/org/apache/sling/launchpad/testing/LoggingSuite.java
index 658b3fb..be2acc3 100644
--- a/src/test/java/org/apache/sling/launchpad/testing/LoggingSuite.java
+++ b/src/test/java/org/apache/sling/launchpad/testing/LoggingSuite.java
@@ -32,10 +32,8 @@
  */
 package org.apache.sling.launchpad.testing;
 
-import java.util.Set;
 
 import junit.framework.Test;
-import junit.framework.TestCase;
 import junit.framework.TestResult;
 import junit.framework.TestSuite;
 
@@ -54,8 +52,8 @@
 
     private int lastFailures;
 
-    LoggingSuite(Set<Class<TestCase>> classSet, String name, Logger logger) {
-        super(classSet.toArray(new Class[classSet.size()]), name);
+    LoggingSuite(String name, Logger logger) {
+        super(name);
         this.logger = logger;
     }
 
@@ -67,9 +65,7 @@
 
     @Override
     public void runTest(Test test, TestResult result) {
-        final String name = (test instanceof TestSuite)
-                ? ((TestSuite) test).getName()
-                : test.getClass().getName();
+        final String name = getName(test); 
         final String startMessage = String.format("Running %s", name);
         System.out.println(startMessage);
         logger.info(startMessage);
@@ -89,4 +85,9 @@
         lastErrors = result.errorCount();
     }
 
+
+    private String getName(Test t) {
+        return (t instanceof TestSuite) ? ((TestSuite) t).getName() : t
+                .toString();
+    }
 }
diff --git a/src/test/java/org/apache/sling/launchpad/testing/TestAll.java b/src/test/java/org/apache/sling/launchpad/testing/TestAll.java
index 2d36f5e..6cca1f0 100644
--- a/src/test/java/org/apache/sling/launchpad/testing/TestAll.java
+++ b/src/test/java/org/apache/sling/launchpad/testing/TestAll.java
@@ -16,10 +16,12 @@
  */
 package org.apache.sling.launchpad.testing;
 
-import junit.framework.Test;
+import junit.framework.JUnit4TestAdapter;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
+import org.junit.runner.RunWith;
+import org.junit.runners.AllTests;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -41,11 +43,12 @@
 /**
  *
  */
+@RunWith(AllTests.class)
 public class TestAll extends TestCase {
     private static final Logger LOGGER = LoggerFactory.getLogger(TestAll.class);
 
     @SuppressWarnings("unchecked")
-    public static Test suite() {
+    public static TestSuite suite() {
         final ClassLoader sysClassLoader = TestAll.class.getClassLoader();
         final List<String> matchingClasses = new ArrayList<String>();
         // Get the URLs
@@ -63,6 +66,9 @@
                 e.printStackTrace();
             }
         }
+        
+        TestSuite suite = new LoggingSuite("Sling Integration Tests matching " + testPattern, LOGGER);
+        int counter = 0;
         final Set<Class<TestCase>> classSet = new HashSet<Class<TestCase>>();
         for (String classFile : matchingClasses) {
             String className = classFileToName(classFile);
@@ -70,16 +76,18 @@
                 final Class<TestCase> c = (Class<TestCase>) sysClassLoader.loadClass(className);
                 if (!c.isInterface() && !Modifier.isAbstract(c.getModifiers())) {
                     LOGGER.info("Added " + className);
-                    classSet.add(c);
+                    suite.addTest(new JUnit4TestAdapter(c));
+                    counter++;
                 }
             } catch (ClassNotFoundException e) {
                 e.printStackTrace();
             }
         }
+        if ( counter == 0 ) {
+            fail("No test classes found in classpath using Pattern " + testRegex);
+        }
         LOGGER.info(classSet.size() + " test classes found using Pattern "
             + testRegex);
-        TestSuite suite = new LoggingSuite(classSet,
-            "Sling Integration Tests matching " + testPattern, LOGGER);
 
         return suite;
     }