|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.apache.tools.ant.ProjectComponent | +--org.apache.tools.ant.Task | +--org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator
Aggregates all <junit> XML formatter testsuite data under a specific directory and transforms the results via XSLT. It is not particulary clean but should be helpful while I am thinking about another technique.
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.
Field Summary | |
static java.lang.String |
DEFAULT_DIR
The default directory: .. |
static java.lang.String |
DEFAULT_FILENAME
the default file name: TESTS-TestSuites.xml |
protected java.util.Vector |
filesets
the list of all filesets, that should contains the xml to aggregate |
protected java.io.File |
toDir
the directory to write the file to |
protected java.lang.String |
toFile
the name of the result file |
protected java.util.Vector |
transformers
|
Fields inherited from class org.apache.tools.ant.Task |
description, location, target, taskName, taskType, wrapper |
Fields inherited from class org.apache.tools.ant.ProjectComponent |
project |
Fields inherited from interface org.apache.tools.ant.taskdefs.optional.junit.XMLConstants |
ATTR_ERRORS, ATTR_FAILURES, ATTR_MESSAGE, ATTR_NAME, ATTR_PACKAGE, ATTR_TESTS, ATTR_TIME, ATTR_TYPE, ATTR_VALUE, ERROR, FAILURE, PROPERTIES, PROPERTY, SYSTEM_ERR, SYSTEM_OUT, TESTCASE, TESTSUITE, TESTSUITES |
Constructor Summary | |
XMLResultAggregator()
|
Method Summary | |
void |
addFileSet(FileSet fs)
Add a new fileset containing the XML results to aggregate |
protected void |
addTestSuite(org.w3c.dom.Element root,
org.w3c.dom.Element testsuite)
Add a new testsuite node to the document. |
protected org.w3c.dom.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 java.io.File |
getDestinationFile()
Get the full destination file where to write the result. |
protected java.io.File[] |
getFiles()
Get all .xml files in the fileset. |
void |
setTodir(java.io.File value)
Set the destination directory where the results should be written. |
void |
setTofile(java.lang.String value)
Set the name of the aggregegated results file. |
protected void |
writeDOMTree(org.w3c.dom.Document doc,
java.io.File file)
Write the DOM tree to a file. |
Methods inherited from class org.apache.tools.ant.Task |
getDescription, getLocation, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, handleErrorOutput, handleOutput, init, isInvalid, log, log, maybeConfigure, perform, setDescription, setLocation, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName |
Methods inherited from class org.apache.tools.ant.ProjectComponent |
getProject, setProject |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected java.util.Vector filesets
protected java.lang.String toFile
protected java.io.File toDir
protected java.util.Vector transformers
public static final java.lang.String DEFAULT_DIR
public static final java.lang.String DEFAULT_FILENAME
Constructor Detail |
public XMLResultAggregator()
Method Detail |
public AggregateTransformer createReport()
public void setTofile(java.lang.String value)
DEFAULT_FILENAME
value
- the name of the file.setTodir(File)
public void setTodir(java.io.File value)
DEFAULT_DIR
. When given a relative directory
it will resolve it from the project directory.
value
- the directory where to write the results, absolute or
relative.public void addFileSet(FileSet fs)
fs
- the new fileset of xml results.public void execute() throws BuildException
execute
in class Task
BuildException
- thrown if there is a serious error while writing
the document.protected java.io.File getDestinationFile()
protected java.io.File[] getFiles()
.xml
files in the fileset.
protected void writeDOMTree(org.w3c.dom.Document doc, java.io.File file) throws java.io.IOException
doc
- the XML document to dump to disk.file
- the filename to write the document to. Should obviouslly be a .xml file.
java.io.IOException
- thrown if there is an error while writing the content.protected org.w3c.dom.Element createDocument()
Create a DOM tree. Has 'testsuites' as firstchild and aggregates all testsuite results that exists in the base directory.
protected void addTestSuite(org.w3c.dom.Element root, org.w3c.dom.Element testsuite)
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.
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.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |