1 29 package net.sourceforge.groboutils.autodoc.v1.testserver.junit; 30 31 32 import junit.framework.Test; 33 import junit.framework.TestListener; 34 import junit.framework.AssertionFailedError; 35 36 import org.apache.log4j.Logger; 37 38 import net.sourceforge.groboutils.autodoc.v1.testserver.MonitorFinder; 39 import net.sourceforge.groboutils.autodoc.v1.testserver.TestCorrelate; 40 import net.sourceforge.groboutils.autodoc.v1.testserver.TestData; 41 import net.sourceforge.groboutils.autodoc.v1.testserver.TestInfo; 42 43 44 53 public abstract class JUnitTestListener extends TestCorrelate 54 implements TestListener 55 { 56 private static final Logger LOG = Logger.getLogger( JUnitTestListener.class ); 57 58 private MonitorFinder finder; 59 60 61 64 public JUnitTestListener( MonitorFinder finder ) 65 { 66 super( null, finder ); 67 } 68 69 70 73 74 77 protected abstract void startTest( TestData data ); 78 79 80 84 protected abstract void endTest( TestData data ); 85 86 87 90 protected abstract void addError( TestData data, Throwable t ); 91 92 93 96 protected abstract void addFailure( TestData data, AssertionFailedError t ); 97 98 99 100 103 106 public void addError(Test test, Throwable t) 107 { 108 if (test == null) 109 { 110 LOG.error("JUnit passed null test to method addError()",t); 111 return; 112 } 113 114 TestData td = getTestData( createTestInfo( test ) ); 115 if (td != null) 117 { 118 addError( td, t ); 119 } 120 else 121 { 122 LOG.warn("JUnit called 'addError' without calling 'startTest'.", 123 t ); 124 } 125 } 126 127 130 public void addFailure(Test test, AssertionFailedError t) 131 { 132 if (test == null) 133 { 134 LOG.error("JUnit passed null test to method addFailure()",t); 135 return; 136 } 137 138 TestData td = getTestData( createTestInfo( test ) ); 139 if (td != null) 141 { 142 addFailure( td, t ); 143 } 144 else 145 { 146 LOG.warn("JUnit called 'addFailure' without calling 'startTest'.", 147 t ); 148 } 149 } 150 151 152 155 public void endTest(Test test) 156 { 157 TestInfo ti = createTestInfo( test ); 158 TestData td = getTestData( ti ); 159 if (td != null) 160 { 161 endTest( td ); 162 163 try 165 { 166 getFinder().getMonitor().sendTestData( ti ); 167 } 168 catch (IllegalStateException ise) 169 { 170 LOG.warn( "Warning for test ["+test+"]: "+ise.getMessage(), 171 ise ); 172 } 173 } 174 else 175 { 176 LOG.warn( "Received an end message for test ["+test+ 177 "], but it was never added." ); 178 } 179 } 180 181 182 185 public void startTest(Test test) 186 { 187 TestInfo ti = createTestInfo( test ); 188 189 getFinder().getMonitor().addTestData( ti ); 191 192 startTest( getTestData( ti ) ); 193 } 194 195 196 199 protected TestInfo createTestInfo( Test test ) 200 { 201 TestInfo ti = new JUnitTestInfo( test ); 202 return ti; 203 } 204 } 205 206 | Popular Tags |