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;
}