sebb 2003/12/05 21:21:26
Modified: src/jorphan/org/apache/jorphan/test AllTests.java
Log:
Look for makeSuite() method if no test() methods found
Revision Changes Path
1.13 +53 -3 jakarta-jmeter/src/jorphan/org/apache/jorphan/test/AllTests.java
Index: AllTests.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/jorphan/org/apache/jorphan/test/AllTests.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- AllTests.java 5 Dec 2003 13:51:57 -0000 1.12
+++ AllTests.java 6 Dec 2003 05:21:26 -0000 1.13
@@ -57,6 +57,7 @@
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.lang.reflect.Method;
import java.util.Iterator;
import java.util.Properties;
@@ -187,7 +188,10 @@
System.out.println("------------");
// don't call isHeadless() here, as it has a side effect.
//--
+ System.out.println("Creating test suite");
TestSuite suite = suite(args[0]);
+ System.out.println("Starting test run");
+
// Jeremy Arnold: This method used to attempt to write results to
// a file, but it had a bug and instead just wrote to System.out.
// Since nobody has complained about this behavior, I'm changing
@@ -229,7 +233,7 @@
try
{
System.out.println(
- "setting up logging props using file: " + args[1]);
+ "Setting up logging props using file: " + args[1]);
props.load(new FileInputStream(args[1]));
LoggingManager.initializeLogging(props);
}
@@ -254,8 +258,12 @@
{
try
{
+ System.out.println(
+ "Using initializeProperties() from " + args[2]);
UnitTestManager um =
(UnitTestManager) Class.forName(args[2]).newInstance();
+ System.out.println(
+ "Setting up initial properties using: " +
args[1]);
um.initializeProperties(args[1]);
}
catch (Exception e)
@@ -288,10 +296,52 @@
String name = (String) classes.next();
try
{
- suite.addTest(new TestSuite(Class.forName(name)));
+ /*
+ * TestSuite only finds testXXX() methods, and does not look
for
+ * suite() methods.
+ *
+ * If no testXXX methods were found, JUnit currently adds a
dummy test
+ * which prints out a warning - so the test count will always
be >= 1
+ *
+ * So we check to see if there is a single test case called
"warning"
+ * If so, we look for the method makeSuite() and invoke that
to get
+ * the suite.
+ *
+ * We don't look for the standard suite() method in case that
clashes
+ * with an existing use of the suite() method. This may be
changed in
+ * future.
+ */
+
+ Class clazz = Class.forName(name);
+ TestSuite ts = new TestSuite(clazz);
+
+ if (// Perhaps no tests were found?
+ (ts.testCount() == 1)
+ &&
+ (ts.testAt(0).toString().startsWith("warning"))
+ )
+ {
+ Method m;
+ try
+ {
+ m = clazz.getMethod("makeSuite", new Class[0]);
+ TestSuite t = (TestSuite)
m.invoke(clazz,null);
+ suite.addTest(t);
+ }
+ catch (Exception e)
+ {// Add the original suite on failure, so we generate a
warning
+ //System.out.println("Error on makeSuite"+e);
+ suite.addTest(ts);
+ }
+ }
+ else
+ {
+ suite.addTest(ts);
+ }
}
catch (Exception ex)
{
+ System.out.println("Error adding test for class "+name+"
"+ex.toString());
log.error("error adding test :" + ex);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]