SLING-2903 - use JUnit4TestAdapter to accept JUnit4 style tests as well
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1489749 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 ef01bde..581a28b 100644
--- a/src/test/java/org/apache/sling/launchpad/testing/LoggingSuite.java
+++ b/src/test/java/org/apache/sling/launchpad/testing/LoggingSuite.java
@@ -16,10 +16,7 @@
*/
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;
@@ -38,8 +35,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;
}
@@ -51,9 +48,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);
@@ -72,5 +67,9 @@
lastFailures = result.failureCount();
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 e03abef..17f38ed 100644
--- a/src/test/java/org/apache/sling/launchpad/testing/TestAll.java
+++ b/src/test/java/org/apache/sling/launchpad/testing/TestAll.java
@@ -16,13 +16,6 @@
*/
package org.apache.sling.launchpad.testing;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Modifier;
@@ -31,21 +24,28 @@
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Enumeration;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.regex.Pattern;
-/**
- *
- */
-public class TestAll extends TestCase {
+import junit.framework.JUnit4TestAdapter;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import static org.junit.Assert.fail;
+import org.junit.runner.RunWith;
+import org.junit.runners.AllTests;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/** Collect our tests and run them with our LoggingSuite */
+ @RunWith(AllTests.class)
+public class TestAll {
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,24 +63,27 @@
e.printStackTrace();
}
}
- final Set<Class<TestCase>> classSet = new HashSet<Class<TestCase>>();
+
+ final TestSuite suite = new LoggingSuite("Sling Integration Tests matching " + testPattern, LOGGER);
+ int counter=0;
for (String classFile : matchingClasses) {
String className = classFileToName(classFile);
try {
final Class<TestCase> c = (Class<TestCase>) sysClassLoader.loadClass(className);
if (!c.isInterface() && !Modifier.isAbstract(c.getModifiers())) {
+ suite.addTest(new JUnit4TestAdapter(c));
+ counter++;
LOGGER.info("Added " + className);
- classSet.add(c);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
- LOGGER.info(classSet.size() + " test classes found using Pattern "
- + testRegex);
- TestSuite suite = new LoggingSuite(classSet,
- "Sling Integration Tests matching " + testPattern, LOGGER);
-
+
+ if(counter==0) {
+ fail("No test classes found in classpath using Pattern " + testRegex);
+ }
+ LOGGER.info("{} test classes found using Pattern {}", counter, testRegex);
return suite;
}