JUnit
This plugin provides a java command creator to execute JUnit test cases in a
module and a target to generate a global report.
Declaration
<plugin name="junit">
<attribute name="junit.jar" value="junit-3.8.1.jar"/>
</plugin>
Dependencies
Usage
At execution unit or module level, you have to declare the
following attribute to enable JUnit support:
<attribute name="junit.runnable" value="true"/>
It is exactly equivalent to add the
junit.jar global attribute as
jar dependency to the module and to add the following runtime attributes:
<attribute name="runtime.runnable" value="true"/>
<attribute name="runtime.command.creator" value="runtime.command.creator.junit"/>
Now, the module declared as runnable will have a
start.module.eu
shortcut in the
build.xml file. Call one of
start.module.eu.mymodule.myeu or
startdev.module.eu.mymodule.myeu (or eventually without
.myeu if the module has no execution unit declared) will execute
JUnit with all the module's selected test cases.
An XML report per test case is generated in
dist/junit.
As a shortcut, invoke
junit.start.all or
junit.startdev.all targets will
run all junit modules declared in the project.
Then the set reports can be generated with
junit.report that collects all
available test cases XML reports in
dist/junit for a module set and writes a
global HTML report in
${reports.directory}/junit/SET or in
dist/junit/SET
if reports directory is not set.
If the
website plugin is configured, the
reports.directory is used and a
report entry is added to the project reports overview.
To clean reports, the
junit.clean.report target can be used.
Advanced usage
Change default runner
You can change default runner globally with the attribute
junit.default.runner set in the plugin configuration. You may also set the
runner to use for a specific module execution unit with the
junit.runner
attribute or just for a command invocation with the property set
-Djunit.runner=junit.swingui.TestRunner (for instance) when a runtime target
is called with a JUnit module.
Run a specific TestSuite
By default, the JUnit runner execute the
suite method of the
ch.elca.el4ant.junit.CollectionSuite class to detect TestCase implementation
in the module
classes directory.
To prevent test case detection, you may set the
junit.collectionsuite.suite
attribute with a TestCase class name or a class name with a static
suite
method. This attribute can be set on a specific module execution unit, or set
for a command invocation with the property
-Djunit.collectionsuite.suite=mypackage.MyTestCase on the command line.
XML reports are generated for the selected suite.
Change default TestSuite
By default, the JUnit runner execute the
suite method of the
ch.elca.el4ant.junit.CollectionSuite class to detect TestCase implementation
in the module
classes directory.
You may want to run your own suite, providing a subset of test cases to the
runner. It can be done for a specific module execution unit with the
junit.suite attribute or just for a command invocation with the property
-Djunit.suite=mypackage.MyTestCase set when a runtime target is called with a
JUnit module. The class must be a JUnit TestCase or provide a static
suite
method that returns a JUnit TestSuite. Of course, the specified class must be
available in the ClassPath.
As far as the EL4Ant
CollectionSuite is responsible to generate XML reports,
setting the suite to run prevent reports to be generated.
Hide execution output
The attribute
junit.collectionsuite.showoutput may be set on a module or an
execution unit to prevent test execution output to be published on the Ant
console. Its default value is
true. This attribute can also be set on the
execution command line to hide output for this single run with
-Djunit.collectionsuite.showoutput=false. Even if output is hiden, it is
stored in XML reports.
Attributes
Global
-
junit.jar is the jar name to use as dependency. Default value is junit.jar.
-
junit.set is the set name to add to junit modules. Default value is
empty, in that case, no change is done on module sets.
-
junit.set.list is the list of module sets for which reports are generated.
Default value is the list of known module sets.
-
junit.default.runner is the default JUnit runner used to run test suite.
Per execution eu
-
junit.runner is the JUnit runner used to run test suite in the concerned
module execution unit. Default value is the value set to
junit.default.runner. This attribute may be set to a module if no
execution unit is declared.
-
junit.collectionsuite.showoutput is a switch to hide Java test execution
output on the Ant console. Default value is true.
-
junit.collectionsuite.suite is a TestCase name class or a class name
with a suite method. This class is run by the CollectionSuite if
set. Default behaviour of the CollectionSuite is to detect available
test cases.
-
junit.suite is a TestCase name class or a class name with a suite
method. Default value is ch.elca.el4ant.junit.CollectionSuite.
Targets
-
junit.start.all calls start.module.eu on all execution unit modules that are
configured to be run with JUnit.
-
junit.startdev.all calls startdev.module.eu on all execution unit modules
that are configured to be run with JUnit.
-
junit.report generates the test reports for all set in the dist/junit directory
or in the reports.directory.
-
junit.report.set generates the test report for a specific set.
-
junit.clean.report cleans the generated test reports for all module sets.
-
runtime.command.junit.creator is the java command creator to use as execution
unit runtime.command.creator.
Hooks
-
pre.junit.report and post.junit.report are called before and after the set
report generation.
ToDo
- Support JAR for binary module
- Report JVM crash and exit