org.apache.tools.ant.taskdefs.optional.junit
public class XMLResultAggregator extends Task implements XMLConstants
The main problem is due to the fact that a JVM can be forked for a testcase thus making it impossible to aggregate all testcases since the listener is (obviously) in the forked JVM. A solution could be to write a TestListener that will receive events from the TestRunner via sockets. This is IMHO the simplest way to do it to avoid this file hacking thing.
UNKNOWN: name="junitreport" category="testing"
Field Summary | |
---|---|
static String | DEFAULT_DIR The default directory: .. |
static String | DEFAULT_FILENAME the default file name: TESTS-TestSuites.xml |
protected Vector | filesets the list of all filesets, that should contains the xml to aggregate |
protected int | generatedId the current generated id |
protected File | toDir the directory to write the file to |
protected String | toFile the name of the result file |
protected Vector | transformers |
Method Summary | |
---|---|
void | addFileSet(FileSet fs)
Add a new fileset containing the XML results to aggregate |
protected void | addTestSuite(Element root, Element testsuite) Add a new testsuite node to the document. |
protected Element | createDocument() Create a DOM tree. |
AggregateTransformer | createReport()
Generate a report based on the document created by the merge. |
void | execute()
Aggregate all testsuites into a single document and write it to the
specified directory and file. |
protected File | getDestinationFile()
Get the full destination file where to write the result. |
protected File[] | getFiles()
Get all .xml files in the fileset.
|
void | setTodir(File value)
Set the destination directory where the results should be written. |
void | setTofile(String value)
Set the name of the aggregegated results file. |
protected void | writeDOMTree(Document doc, File file)
Write the DOM tree to a file. |
Parameters: fs the new fileset of xml results.
Add a new testsuite node to the document. The main difference is that it split the previous fully qualified name into a package and a name.
For example: org.apache.Whatever will be split into org.apache and Whatever.
Parameters: root the root element to which the testsuite node should be appended. testsuite the element to append to the given root. It will slightly modify the original node to change the name attribute and add a package one.
Create a DOM tree. Has 'testsuites' as firstchild and aggregates all testsuite results that exists in the base directory.
Returns: the root element of DOM tree that aggregates all testsuites.
Returns: the report
Throws: BuildException thrown if there is a serious error while writing the document.
Returns: the destination file where should be written the result file.
.xml
files in the fileset.
Returns: all files in the fileset that end with a '.xml'.
Parameters: value the directory where to write the results, absolute or relative.
Parameters: value the name of the file.
See Also: setTodir
Parameters: doc the XML document to dump to disk. file the filename to write the document to. Should obviouslly be a .xml file.
Throws: IOException thrown if there is an error while writing the content.