View Javadoc
1 /* PlainFormatter */ 2 3 package org.quilt.reports; 4 5 import org.apache.tools.ant.taskdefs.optional.junit.*; 6 import org.apache.tools.ant.BuildException; 7 8 import java.io.OutputStream; 9 import java.io.StringWriter; 10 import java.io.PrintWriter; 11 import java.io.IOException; 12 import java.text.NumberFormat; 13 import java.util.Hashtable; 14 15 import junit.framework.AssertionFailedError; 16 import junit.framework.Test; 17 18 import org.quilt.runner.Runner; 19 import org.quilt.framework.*; 20 21 /*** Plain text output of JUnit test results. */ 22 23 public class PlainFormatter extends BaseFormatter { 24 25 private Hashtable testStarts = new Hashtable(); 26 private Hashtable failed = new Hashtable(); 27 28 /*** No-arg constructor. */ 29 public PlainFormatter() { 30 results = new StringWriter(); 31 resultWriter = new PrintWriter(results); 32 } 33 34 // INTERFACE FORMATTER ////////////////////////////////////////// 35 36 public void endTestSuite(QuiltTest qt) throws BuildException { 37 StringBuffer sb = new StringBuffer("Testsuite: " + qt.getName() 38 + "\nTests run: " + qt.runCount() 39 + ", Failures: " + qt.failureCount() 40 + ", Errors: " + qt.errorCount() 41 + ", Time elapsed: " + numberFormat.format( 42 qt.getRunTime() / 1000.0) 43 + " sec\n"); 44 45 if (systemOutput != null && systemOutput.length() > 0) { 46 sb.append( 47 "------------- Standard Output ----------------\n" 48 + systemOutput 49 + "------------- ---------------- ---------------\n"); 50 } 51 52 if (systemError != null && systemError.length() > 0) { 53 sb.append( 54 "------------- Standard Error -----------------\n" 55 + systemError 56 + "------------- ---------------- ---------------\n"); 57 } 58 59 sb.append("\n"); 60 61 if (out != null) { 62 try { 63 out.write(sb.toString().getBytes()); 64 resultWriter.close(); 65 out.write(results.toString().getBytes()); 66 out.flush(); 67 } catch (IOException ioex) { 68 throw new BuildException("Unable to write output", ioex); 69 } finally { 70 if (out != System.out && out != System.err) { 71 try { 72 out.close(); 73 } catch (IOException e) {} 74 } 75 } 76 } 77 } 78 79 // INTERFACE TESTLISTENER /////////////////////////////////////// 80 public void startTest(Test t) { 81 testStarts.put(t, new Long(System.currentTimeMillis())); 82 failed.put(t, Boolean.FALSE); 83 } 84 85 public void endTest(Test test) { 86 synchronized (resultWriter) { 87 // requires JUnit 3.7 or later 88 resultWriter.print("Testcase: " + getTestName(test)); 89 90 // remember that the hash holds objects, not primitives 91 if (Boolean.TRUE.equals(failed.get(test))) { 92 return; 93 } 94 Long t0 = (Long) testStarts.get(test); 95 double seconds = 0; 96 // can be null if an error occured in setUp 97 if (t0 != null) { 98 seconds = 99 (System.currentTimeMillis() - t0.longValue()) / 1000.0; 100 } 101 102 resultWriter.println(" took " 103 + numberFormat.format(seconds) + " sec"); 104 } 105 } 106 public void addFailure(Test test, Throwable t) { 107 formatError("\tFAILED", test, t); 108 } 109 public void addFailure(Test test, AssertionFailedError t) { 110 addFailure(test, (Throwable) t); 111 } 112 public void addError(Test test, Throwable t) { 113 formatError("\tCaused an ERROR", test, t); 114 } 115 // OTHER METHODS //////////////////////////////////////////////// 116 private void formatError(String type, Test test, Throwable t) { 117 synchronized (resultWriter) { 118 if (test != null) { 119 endTest(test); 120 failed.put(test, Boolean.TRUE); 121 } 122 123 resultWriter.println(type); 124 resultWriter.println(t.getMessage()); 125 String strace = runner.getFilteredTrace(t, filtertrace); 126 resultWriter.print(strace); 127 resultWriter.println(""); 128 } 129 } 130 }

This page was automatically generated by Maven