Class FailureRecorder
java.lang.Object
org.apache.tools.ant.ProjectComponent
org.apache.tools.ant.taskdefs.optional.junit.FailureRecorder
- All Implemented Interfaces:
java.lang.Cloneable
,java.util.EventListener
,junit.framework.TestListener
,BuildListener
,JUnitResultFormatter
,JUnitTaskMirror.JUnitResultFormatterMirror
public class FailureRecorder extends ProjectComponent implements JUnitResultFormatter, BuildListener
Collects all failing test cases and creates a new JUnit test class containing a suite() method which calls these failed tests.
Having classes A ... D with each several testcases you could earn a new test class like
// generated on: 2007.08.06 09:42:34,555 import junit.framework.*; public class FailedTests extends TestCase { public FailedTests(String testname) { super(testname); } public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest(new B("test04")); suite.addTest(new org.D("test10")); return suite; } }Because each running test case gets its own formatter, we collect the failing test cases in a static list. Because we don't have a finalizer method in the formatters "lifecycle", we register this formatter as BuildListener and generate the new java source on taskFinished event.
- Since:
- Ant 1.8.0
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
FailureRecorder.TestInfos
TestInfos holds information about a given test for later use. -
Field Summary
Fields Modifier and Type Field Description static java.lang.String
DEFAULT_CLASS_LOCATION
Default location and name for the generated JUnit class file, in the temp directory + FailedTestsstatic java.lang.String
MAGIC_PROPERTY_CLASS_LOCATION
This is the name of a magic System property ("ant.junit.failureCollector"). -
Constructor Summary
Constructors Constructor Description FailureRecorder()
-
Method Summary
Modifier and Type Method Description void
addError(junit.framework.Test test, java.lang.Throwable throwable)
Add the failed test to the list.void
addFailure(junit.framework.Test test, junit.framework.AssertionFailedError error)
Add the failed test to the list.void
buildFinished(BuildEvent event)
Not used Signals that the last target has finished.void
buildStarted(BuildEvent event)
Not used Signals that a build has started.void
endTest(junit.framework.Test test)
Not usedvoid
endTestSuite(JUnitTest suite)
Not used The whole testsuite ended.void
log(java.lang.String message)
Logging facade in INFO-mode.void
messageLogged(BuildEvent event)
Not used Signals a message logging event.void
setOutput(java.io.OutputStream out)
Not used Sets the stream the formatter is supposed to write its results to.void
setProject(Project project)
This method is called by the Ant runtime by reflection.void
setSystemError(java.lang.String err)
Not used This is what the test has written to System.errvoid
setSystemOutput(java.lang.String out)
Not used This is what the test has written to System.outvoid
startTest(junit.framework.Test test)
Not usedvoid
startTestSuite(JUnitTest suite)
Not used The whole testsuite started.void
targetFinished(BuildEvent event)
Not used Signals that a target has finished.void
targetStarted(BuildEvent event)
Not used Signals that a target is starting.void
taskFinished(BuildEvent event)
The task outside of this JUnitResultFormatter is the <junit> task.void
taskStarted(BuildEvent event)
Not used Signals that a task is starting.void
verbose(java.lang.String message)
Logging facade in VERBOSE-mode.Methods inherited from class org.apache.tools.ant.ProjectComponent
clone, getDescription, getLocation, getProject, log, setDescription, setLocation
-
Field Details
-
MAGIC_PROPERTY_CLASS_LOCATION
public static final java.lang.String MAGIC_PROPERTY_CLASS_LOCATIONThis is the name of a magic System property ("ant.junit.failureCollector"). The value of this System property should point to the location where to store the generated class (without suffix). Default location and name is defined in DEFAULT_CLASS_LOCATION.- See Also:
DEFAULT_CLASS_LOCATION
, Constant Field Values
-
DEFAULT_CLASS_LOCATION
public static final java.lang.String DEFAULT_CLASS_LOCATIONDefault location and name for the generated JUnit class file, in the temp directory + FailedTests
-
-
Constructor Details
-
FailureRecorder
public FailureRecorder()
-
-
Method Details
-
setProject
This method is called by the Ant runtime by reflection. We use the project reference for registration of this class as BuildListener.- Overrides:
setProject
in classProjectComponent
- Parameters:
project
- project reference
-
endTestSuite
Not used The whole testsuite ended.- Specified by:
endTestSuite
in interfaceJUnitResultFormatter
- Parameters:
suite
- the suite.- Throws:
BuildException
- on error.
-
addError
public void addError(junit.framework.Test test, java.lang.Throwable throwable)Add the failed test to the list.- Specified by:
addError
in interfacejunit.framework.TestListener
- Parameters:
test
- the test that erred.throwable
- the reason it erred.- See Also:
TestListener.addError(junit.framework.Test, java.lang.Throwable)
-
addFailure
public void addFailure(junit.framework.Test test, junit.framework.AssertionFailedError error)Add the failed test to the list.- Specified by:
addFailure
in interfacejunit.framework.TestListener
- Parameters:
test
- the test that failed.error
- the assertion that failed.- See Also:
TestListener.addFailure(junit.framework.Test, junit.framework.AssertionFailedError)
-
setOutput
public void setOutput(java.io.OutputStream out)Not used Sets the stream the formatter is supposed to write its results to.- Specified by:
setOutput
in interfaceJUnitResultFormatter
- Specified by:
setOutput
in interfaceJUnitTaskMirror.JUnitResultFormatterMirror
- Parameters:
out
- the output stream to use.
-
setSystemError
public void setSystemError(java.lang.String err)Not used This is what the test has written to System.err- Specified by:
setSystemError
in interfaceJUnitResultFormatter
- Parameters:
err
- the string to write.
-
setSystemOutput
public void setSystemOutput(java.lang.String out)Not used This is what the test has written to System.out- Specified by:
setSystemOutput
in interfaceJUnitResultFormatter
- Parameters:
out
- the string to write.
-
startTestSuite
Not used The whole testsuite started.- Specified by:
startTestSuite
in interfaceJUnitResultFormatter
- Parameters:
suite
- the suite.- Throws:
BuildException
- on error.
-
endTest
public void endTest(junit.framework.Test test)Not used- Specified by:
endTest
in interfacejunit.framework.TestListener
-
startTest
public void startTest(junit.framework.Test test)Not used- Specified by:
startTest
in interfacejunit.framework.TestListener
-
log
public void log(java.lang.String message)Logging facade in INFO-mode.- Overrides:
log
in classProjectComponent
- Parameters:
message
- Log-message
-
verbose
public void verbose(java.lang.String message)Logging facade in VERBOSE-mode.- Parameters:
message
- Log-message
-
buildFinished
Not used Signals that the last target has finished. This event will still be fired if an error occurred during the build.- Specified by:
buildFinished
in interfaceBuildListener
- Parameters:
event
- An event with any relevant extra information. Must not benull
.- See Also:
BuildEvent.getException()
-
buildStarted
Not used Signals that a build has started. This event is fired before any targets have started.This event is fired before the project instance is fully configured. In particular no properties have been set and the project may not know its name or default target, yet.
- Specified by:
buildStarted
in interfaceBuildListener
- Parameters:
event
- An event with any relevant extra information. Must not benull
.
-
messageLogged
Not used Signals a message logging event.- Specified by:
messageLogged
in interfaceBuildListener
- Parameters:
event
- An event with any relevant extra information. Must not benull
.- See Also:
BuildEvent.getMessage()
,BuildEvent.getException()
,BuildEvent.getPriority()
-
targetFinished
Not used Signals that a target has finished. This event will still be fired if an error occurred during the build.- Specified by:
targetFinished
in interfaceBuildListener
- Parameters:
event
- An event with any relevant extra information. Must not benull
.- See Also:
BuildEvent.getException()
-
targetStarted
Not used Signals that a target is starting.- Specified by:
targetStarted
in interfaceBuildListener
- Parameters:
event
- An event with any relevant extra information. Must not benull
.- See Also:
BuildEvent.getTarget()
-
taskFinished
The task outside of this JUnitResultFormatter is the <junit> task. So all tests passed and we could create the new java class.- Specified by:
taskFinished
in interfaceBuildListener
- Parameters:
event
- not used- See Also:
BuildListener.taskFinished(org.apache.tools.ant.BuildEvent)
-
taskStarted
Not used Signals that a task is starting.- Specified by:
taskStarted
in interfaceBuildListener
- Parameters:
event
- An event with any relevant extra information. Must not benull
.- See Also:
BuildEvent.getTask()
-