1 6 package de.uka.ipd.coverage.junit; 7 8 import java.io.PrintStream ; 9 import java.lang.reflect.InvocationTargetException ; 10 import java.lang.reflect.Method ; 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 22 public class CoverageTestRunner extends TestRunner { 23 24 private Logger logger = new Logger(this); 25 26 private static PrintStream out = System.out; 27 28 public CoverageTestRunner() { 29 super(new CoverageResultPrinter(out)); 30 logger.debug("CoverageTestRunner instanciated."); } 32 protected TestResult createTestResult() { 33 return new CoverageTestResult(); 34 } 35 36 public void testEnded(String testName) { 37 } 38 public TestSuiteLoader getLoader() { 39 logger.debug("Creating testSuiteLoader"); return super.getLoader(); 41 } 42 43 public static void main(String args[]) { 44 ClassLoader loader = new CoverageClassLoader(); 45 try { 46 Class clazz = loader.loadClass(CoverageTestRunner.class.getName()); 47 Logger.getInstance().debug("class " + clazz.getName() + " found. Searching for method."); Method method = clazz.getDeclaredMethod( 51 "startTests", new Class []{String [].class}); Logger.getInstance().debug("method " + method.getName() + " found. Invoking"); method.invoke(null, new Object [] {args}); 54 } catch (ClassNotFoundException e) { 55 Logger.getInstance().fatal("Class not found " + CoverageTestRunner.class + "\n " + e.getMessage()); } catch (SecurityException e) { 59 e.printStackTrace(); 60 Logger.getInstance().fatal("Can not use classloader " + CoverageClassLoader.class + "\n " + e.getMessage()); } catch (NoSuchMethodException e) { 63 e.printStackTrace(); 64 Logger.getInstance().fatal("Method startTest(String[]) not found in " + CoverageTestRunner.class + "\n " + e.getMessage()); } catch (IllegalArgumentException e) { 67 e.printStackTrace(); 68 Logger.getInstance().fatal("Method startTest(String[]) could not be invoked " + CoverageTestRunner.class + "\n " + e.getMessage()); } catch (IllegalAccessException e) { 71 e.printStackTrace(); 72 Logger.getInstance().fatal("Method startTest(String[]) could not be invoked " + CoverageTestRunner.class + "\n " + e.getMessage()); } catch (InvocationTargetException e) { 75 e.printStackTrace(); 76 Logger.getInstance().fatal("Method startTests(String[]) could not be invoked " + CoverageTestRunner.class + "\n " + e.getMessage()); e.printStackTrace(); 80 Logger.getInstance().fatal("Constructor could not be invoked " + CoverageTestRunner.class + "\n " + e.getMessage()); } 83 } 84 85 88 public static void startTests(String [] args) { 89 CoverageTestRunner runner = new CoverageTestRunner(); 90 try { 91 Logger.getInstance().info("starting testrun."); TestResult r = runner.start(args); 93 if (!r.wasSuccessful()) { 94 Logger.getInstance().info("testrun finished. FAILURE"); System.exit(FAILURE_EXIT); 96 } 97 Logger.getInstance().info("testrun finished. SUCCESS"); System.exit(SUCCESS_EXIT); 99 } catch(Exception e) { 100 Logger.getInstance().error(e.getMessage()); 101 System.exit(EXCEPTION_EXIT); 102 } 103 } 104 } 105 | Popular Tags |