|
||||||||||
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.JUnitTask
Runs JUnit tests.
JUnit is a framework to create unit test. It has been initially created by Erich Gamma and Kent Beck. JUnit can be found at http://www.junit.org.
JUnitTask
can run a single specific
JUnitTest
using the test
element.
<target name="test-int-chars" depends="jar-test">
<echo message="testing international characters"/>
<junit printsummary="no" haltonfailure="yes" fork="false">
<classpath refid="classpath"/>
<formatter type="plain" usefile="false" />
<test name="org.apache.ecs.InternationalCharTest" />
</junit>
</target>
runs a single junit test
(org.apache.ecs.InternationalCharTest
) in the current
VM using the path with id classpath
as classpath and
presents the results formatted using the standard
plain
formatter on the command line.
This task can also run batches of tests. The
batchtest
element creates a BatchTest
based on a fileset. This allows, for example, all classes found in
directory to be run as testcases.
For example,
<target name="run-tests" depends="dump-info,compile-tests" if="junit.present">
<junit printsummary="no" haltonfailure="yes" fork="${junit.fork}">
<jvmarg value="-classic"/>
<classpath refid="tests-classpath"/>
<sysproperty key="build.tests" value="${build.tests}"/>
<formatter type="brief" usefile="false" />
<batchtest>
<fileset dir="${tests.dir}">
<include name="**/*Test*" />
</fileset>
</batchtest>
</junit>
</target>
this target finds any classes with a test
directory
anywhere in their path (under the top ${tests.dir}
, of
course) and creates JUnitTest
's for each one.
Of course, <junit>
and
<batch>
elements can be combined for more
complex tests. For an example, see the ant build.xml
target run-tests
(the second example is an edited
version).
To spawn a new Java VM to prevent interferences between
different testcases, you need to enable fork
. A
number of attributes and elements allow you to set up how this JVM
runs.
JUnitTest
,
BatchTest
Nested Class Summary | |
static class |
JUnitTask.ForkMode
These are the different forking options |
static class |
JUnitTask.SummaryAttribute
Print summary enumeration values. |
Field Summary |
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 |
Constructor Summary | |
JUnitTask()
Creates a new JUnitRunner and enables fork of a new Java VM. |
Method Summary | |
protected void |
actOnTestResult(int exitValue,
boolean wasKilled,
JUnitTest test,
java.lang.String name)
Logs information about failed tests, potentially stops processing (by throwing a BuildException) if a failure/error occured or sets a property. |
void |
addAssertions(Assertions asserts)
Assertions to enable in this program (if fork=true) |
protected void |
addClasspathEntry(java.lang.String resource)
Search for the given resource and add the directory or archive that contains it to the classpath. |
void |
addConfiguredSysproperty(Environment.Variable sysp)
Adds a system property that tests can access. |
void |
addEnv(Environment.Variable var)
Adds an environment variable; used when forking. |
void |
addFormatter(FormatterElement fe)
Add a new formatter to all tests of this task. |
void |
addSysproperty(Environment.Variable sysp)
Deprecated. since ant 1.6 |
void |
addSyspropertyset(PropertySet sysp)
Adds a set of properties that will be used as system properties that tests can access. |
void |
addTest(JUnitTest test)
Add a new single testcase. |
protected java.util.Enumeration |
allTests()
return an enumeration listing each test, then each batchtest |
BatchTest |
createBatchTest()
Adds a set of tests based on pattern matching. |
Path |
createBootclasspath()
Adds a path to the bootclasspath. |
Path |
createClasspath()
Adds path to classpath used for tests. |
Commandline.Argument |
createJvmarg()
Adds a JVM argument; ignored if not forking. |
Permissions |
createPermissions()
Sets the permissions for the application run inside the same JVM. |
protected ExecuteWatchdog |
createWatchdog()
|
void |
execute()
Runs the testcase. |
protected void |
execute(JUnitTest arg)
Run the tests. |
protected void |
execute(java.util.List tests)
Execute a list of tests in a single forked Java VM. |
protected java.util.Collection |
executeOrQueue(java.util.Enumeration testList,
boolean runIndividual)
Executes all tests that don't need to be forked (or all tests if the runIndividual argument is true. |
protected CommandlineJava |
getCommandline()
|
protected java.io.OutputStream |
getDefaultOutput()
Get the default output for a formatter. |
protected java.util.Enumeration |
getIndividualTests()
Merge all individual tests from the batchtest with all individual tests and return an enumeration over all JUnitTest. |
protected java.io.File |
getOutput(FormatterElement fe,
JUnitTest test)
If the formatter sends output to a file, return that file. |
void |
handleErrorFlush(java.lang.String output)
Pass output sent to System.err to the TestRunner so it can collect it for the formatters. |
void |
handleErrorOutput(java.lang.String output)
Pass output sent to System.err to the TestRunner so it can collect it for the formatters. |
protected void |
handleFlush(java.lang.String output)
Pass output sent to System.out to the TestRunner so it can collect ot for the formatters. |
protected int |
handleInput(byte[] buffer,
int offset,
int length)
Handle an input request by this task |
protected void |
handleOutput(java.lang.String output)
Pass output sent to System.out to the TestRunner so it can collect ot for the formatters. |
void |
init()
Adds the jars or directories containing Ant, this task and JUnit to the classpath - this should make the forked JVM work without having to specify them directly. |
void |
setDir(java.io.File dir)
The directory to invoke the VM in. |
void |
setErrorProperty(java.lang.String propertyName)
Property to set to "true" if there is a error in a test. |
void |
setFailureProperty(java.lang.String propertyName)
Property to set to "true" if there is a failure in a test. |
void |
setFiltertrace(boolean value)
If true, smartly filter the stack frames of JUnit errors and failures before reporting them. |
void |
setFork(boolean value)
If true, JVM should be forked for each test. |
void |
setForkMode(JUnitTask.ForkMode mode)
Set the behavior when fork fork has been enabled. |
void |
setHaltonerror(boolean value)
If true, stop the build process when there is an error in a test. |
void |
setHaltonfailure(boolean value)
If true, stop the build process if a test fails (errors are considered failures as well). |
void |
setIncludeantruntime(boolean b)
If true, include ant.jar, optional.jar and junit.jar in the forked VM. |
void |
setJvm(java.lang.String value)
The command used to invoke the Java Virtual Machine, default is 'java'. |
void |
setMaxmemory(java.lang.String max)
Set the maximum memory to be used by all forked JVMs. |
void |
setNewenvironment(boolean newenv)
If true, use a new environment when forked. |
void |
setPrintsummary(JUnitTask.SummaryAttribute value)
If true, print one-line statistics for each test, or "withOutAndErr" to also show standard output and error. |
void |
setReloading(boolean value)
If true, force ant to re-classload all classes for each JUnit TestCase |
void |
setShowOutput(boolean showOutput)
If true, send any output generated by tests to Ant's logging system as well as to the formatters. |
void |
setTempdir(java.io.File tmpDir)
Where Ant should place temporary files. |
void |
setTimeout(java.lang.Integer value)
Set the timeout value (in milliseconds). |
Methods inherited from class org.apache.tools.ant.Task |
getDescription, getLocation, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, isInvalid, log, log, maybeConfigure, perform, reconfigure, setDescription, setLocation, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType |
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 |
Constructor Detail |
public JUnitTask() throws java.lang.Exception
java.lang.Exception
- under ??? circumstancesMethod Detail |
public void setReloading(boolean value)
value
- force class reloading for each test casepublic void setFiltertrace(boolean value)
This property is applied on all BatchTest (batchtest) and JUnitTest (test) however it can possibly be overridden by their own properties.
value
- false if it should not filter, otherwise
truepublic void setHaltonerror(boolean value)
value
- true if it should halt, otherwise
falsepublic void setErrorProperty(java.lang.String propertyName)
This property is applied on all BatchTest (batchtest) and JUnitTest (test), however, it can possibly be overriden by their own properties.
propertyName
- the name of the property to set in the
event of an error.public void setHaltonfailure(boolean value)
value
- true if it should halt, otherwise
falsepublic void setFailureProperty(java.lang.String propertyName)
This property is applied on all BatchTest (batchtest) and JUnitTest (test), however, it can possibly be overriden by their own properties.
propertyName
- the name of the property to set in the
event of an failure.public void setFork(boolean value)
It avoids interference between testcases and possibly avoids hanging the build. this property is applied on all BatchTest (batchtest) and JUnitTest (test) however it can possibly be overridden by their own properties.
value
- true if a JVM should be forked, otherwise
falsesetTimeout(java.lang.Integer)
public void setForkMode(JUnitTask.ForkMode mode)
fork
fork has been enabled.
Possible values are "once", "perTest" and "perBatch". If set to "once", only a single Java VM will be forked for all tests, with "perTest" (the default) each test will run in a fresh Java VM and "perBatch" will run all tests from the same <batchtest> in the same Java VM.
This attribute will be ignored if tests run in the same VM as Ant.
Only tests with the same configuration of haltonerror, haltonfailure, errorproperty, failureproperty and filtertrace can share a forked Java VM, so even if you set the value to "once", Ant may need to fork mutliple VMs.
public void setPrintsummary(JUnitTask.SummaryAttribute value)
value
- true to print a summary,
withOutAndErr to include the test's output as
well, false otherwise.SummaryJUnitResultFormatter
public void setTimeout(java.lang.Integer value)
If the test is running for more than this value, the test will be canceled. (works only when in 'fork' mode).
value
- the maximum time (in milliseconds) allowed before
declaring the test as 'timed-out'setFork(boolean)
public void setMaxmemory(java.lang.String max)
max
- the value as defined by -mx or -Xmx
in the java command line options.public void setJvm(java.lang.String value)
value
- the new VM to use instead of javasetFork(boolean)
public Commandline.Argument createJvmarg()
setFork(boolean)
public void setDir(java.io.File dir)
dir
- the directory to invoke the JVM from.setFork(boolean)
public void addSysproperty(Environment.Variable sysp)
sysp
- environment variable to addpublic void addConfiguredSysproperty(Environment.Variable sysp)
sysp
- new environment variable to addpublic void addSyspropertyset(PropertySet sysp)
sysp
- set of properties to be addedpublic Path createClasspath()
public Path createBootclasspath()
public void addEnv(Environment.Variable var)
Will be ignored if we are not forking a new VM.
var
- environment variable to be addedpublic void setNewenvironment(boolean newenv)
Will be ignored if we are not forking a new VM.
newenv
- boolean indicating if setting a new environment is wishedpublic void addTest(JUnitTest test)
test
- a new single testcaseJUnitTest
public BatchTest createBatchTest()
BatchTest
public void addFormatter(FormatterElement fe)
fe
- formatter elementpublic void setIncludeantruntime(boolean b)
b
- include ant run time yes or nopublic void setShowOutput(boolean showOutput)
Output will always be passed to the formatters and not by shown by default. This option should for example be set for tests that are interactive and prompt the user to do something.
showOutput
- if true, send output to Ant's logging system toopublic void addAssertions(Assertions asserts)
asserts
- assertion setpublic Permissions createPermissions()
public void setTempdir(java.io.File tmpDir)
tmpDir
- location where temporary files should go topublic void init()
init
in class Task
public void execute() throws BuildException
execute
in class Task
BuildException
- in case of test failures or errorsprotected void execute(JUnitTest arg) throws BuildException
arg
- one JunitTest
BuildException
- in case of test failures or errorsprotected void execute(java.util.List tests) throws BuildException
BuildException
protected void handleOutput(java.lang.String output)
handleOutput
in class Task
output
- output coming from System.outprotected int handleInput(byte[] buffer, int offset, int length) throws java.io.IOException
Task
handleInput
in class Task
buffer
- the buffer into which data is to be read.offset
- the offset into the buffer at which data is stored.length
- the amount of data to read
java.io.IOException
- if the data cannot be readTask.handleInput(byte[], int, int)
protected void handleFlush(java.lang.String output)
handleFlush
in class Task
output
- output coming from System.outpublic void handleErrorOutput(java.lang.String output)
handleErrorOutput
in class Task
output
- output coming from System.errpublic void handleErrorFlush(java.lang.String output)
handleErrorFlush
in class Task
output
- coming from System.errprotected ExecuteWatchdog createWatchdog() throws BuildException
BuildException
- under unspecified circumstancesprotected java.io.OutputStream getDefaultOutput()
protected java.util.Enumeration getIndividualTests()
protected java.util.Enumeration allTests()
protected java.io.File getOutput(FormatterElement fe, JUnitTest test)
fe
- formatter elementtest
- one JUnit test
protected void addClasspathEntry(java.lang.String resource)
Doesn't work for archives in JDK 1.1 as the URL returned by getResource doesn't contain the name of the archive.
resource
- resource that one wants to lookupprotected CommandlineJava getCommandline()
protected java.util.Collection executeOrQueue(java.util.Enumeration testList, boolean runIndividual)
protected void actOnTestResult(int exitValue, boolean wasKilled, JUnitTest test, java.lang.String name)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |