KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > uka > ipd > coverage > junit > CoverageTestRunner


1 /*
2  * Created on 26.08.2004
3  *
4  * written by Matthias Kempka
5  */

6 package de.uka.ipd.coverage.junit;
7
8 import java.io.PrintStream JavaDoc;
9 import java.lang.reflect.InvocationTargetException JavaDoc;
10 import java.lang.reflect.Method JavaDoc;
11
12 import junit.framework.TestResult;
13 import junit.runner.TestSuiteLoader;
14 import junit.textui.TestRunner;
15 import de.uka.ipd.coverage.recording.CoverageClassLoader;
16 import de.uka.ipd.coverage.utils.Logger;
17
18 /**
19  * Created on 26.08.2004
20  * @author Matthias Kempka
21  */

22 public class CoverageTestRunner extends TestRunner {
23
24     private Logger logger = new Logger(this);
25     
26     private static PrintStream JavaDoc out = System.out;
27     
28     public CoverageTestRunner() {
29         super(new CoverageResultPrinter(out));
30         logger.debug("CoverageTestRunner instanciated."); //$NON-NLS-1$
31
}
32     protected TestResult createTestResult() {
33         return new CoverageTestResult();
34     }
35     
36     public void testEnded(String JavaDoc testName) {
37     }
38     public TestSuiteLoader getLoader() {
39         logger.debug("Creating testSuiteLoader"); //$NON-NLS-1$
40
return super.getLoader();
41     }
42     
43     public static void main(String JavaDoc args[]) {
44         ClassLoader JavaDoc loader = new CoverageClassLoader();
45         try {
46             Class JavaDoc clazz = loader.loadClass(CoverageTestRunner.class.getName());
47 // Constructor constructor = clazz.getConstructor(new Class[] {});
48
// Object coverageTestRunner = constructor.newInstance(new Object[] {});
49
Logger.getInstance().debug("class " + clazz.getName() + " found. Searching for method."); //$NON-NLS-1$ //$NON-NLS-2$
50
Method JavaDoc method = clazz.getDeclaredMethod(
51                     "startTests", new Class JavaDoc[]{String JavaDoc[].class}); //$NON-NLS-1$
52
Logger.getInstance().debug("method " + method.getName() + " found. Invoking"); //$NON-NLS-1$ //$NON-NLS-2$
53
method.invoke(null, new Object JavaDoc[] {args});
54         } catch (ClassNotFoundException JavaDoc e) {
55             // this won't happen
56
Logger.getInstance().fatal("Class not found " //$NON-NLS-1$
57
+ CoverageTestRunner.class + "\n " + e.getMessage()); //$NON-NLS-1$
58
} catch (SecurityException JavaDoc e) {
59             e.printStackTrace();
60             Logger.getInstance().fatal("Can not use classloader " //$NON-NLS-1$
61
+ CoverageClassLoader.class + "\n " + e.getMessage()); //$NON-NLS-1$
62
} catch (NoSuchMethodException JavaDoc e) {
63             e.printStackTrace();
64             Logger.getInstance().fatal("Method startTest(String[]) not found in " //$NON-NLS-1$
65
+ CoverageTestRunner.class + "\n " + e.getMessage()); //$NON-NLS-1$
66
} catch (IllegalArgumentException JavaDoc e) {
67             e.printStackTrace();
68             Logger.getInstance().fatal("Method startTest(String[]) could not be invoked " //$NON-NLS-1$
69
+ CoverageTestRunner.class + "\n " + e.getMessage()); //$NON-NLS-1$
70
} catch (IllegalAccessException JavaDoc e) {
71             e.printStackTrace();
72             Logger.getInstance().fatal("Method startTest(String[]) could not be invoked " //$NON-NLS-1$
73
+ CoverageTestRunner.class + "\n " + e.getMessage()); //$NON-NLS-1$
74
} catch (InvocationTargetException JavaDoc e) {
75             e.printStackTrace();
76             Logger.getInstance().fatal("Method startTests(String[]) could not be invoked " //$NON-NLS-1$
77
+ CoverageTestRunner.class + "\n " + e.getMessage()); //$NON-NLS-1$
78
// } catch (InstantiationException e) {
79
e.printStackTrace();
80             Logger.getInstance().fatal("Constructor could not be invoked " //$NON-NLS-1$
81
+ CoverageTestRunner.class + "\n " + e.getMessage()); //$NON-NLS-1$
82
}
83     }
84     
85     /**
86      * @param args
87      */

88     public static void startTests(String JavaDoc[] args) {
89         CoverageTestRunner runner = new CoverageTestRunner();
90         try {
91             Logger.getInstance().info("starting testrun."); //$NON-NLS-1$
92
TestResult r = runner.start(args);
93             if (!r.wasSuccessful()) {
94                 Logger.getInstance().info("testrun finished. FAILURE"); //$NON-NLS-1$
95
System.exit(FAILURE_EXIT);
96             }
97             Logger.getInstance().info("testrun finished. SUCCESS"); //$NON-NLS-1$
98
System.exit(SUCCESS_EXIT);
99         } catch(Exception JavaDoc e) {
100             Logger.getInstance().error(e.getMessage());
101             System.exit(EXCEPTION_EXIT);
102         }
103     }
104 }
105
Popular Tags