GitHub user jaikiran opened a pull request:
https://github.com/apache/ant/pull/67
Support for fork mode in junitlauncher
The commit here introduces support for launching the JUnit tests, through
`junitlauncher` task, in forked mode.
I decided to keep the fork aspects as a separate element instead of
introducing multiple attribtues that are only applicable in forked mode. As
such, each `test` or `testclasses` element of the `junitlauncher` task can now
have a nested `fork` element indicating that those tests need to be launced in
a forked JVM. The characteristics of the forked JVM are determined by the
attribtues and nested elements of the `fork` element.
I have added support for most of the fork attribtues that are applicable
for the legacy junit task (I also checked the java task to make sure the JVM
launching characteristics are captured in the fork element's attributes). I am
working on the manual updates to explain this support so this PR doesn't
include that part, but here's what it will end up looking like:
```
...
...
...
...
...
```
From an implementation detail point of view, the core logic of launching
the tests through the JUnit platform remains intact (of course, the code itself
has been moved into an internal class to be shared in forked and non-forked
mode). An internal contract `LaunchDefinition` has been introduced so that the
launching aspects can be captured in this interface. Non-forked and forked mode
execution will internally construct an instance of the `LaunchDefinition`.
A `StandaloneLauncher` (an internal detail of this task) has been
introduced to be the entry point with a `main` method for forked mode
execution. The responsibility of this class is to parse the arguments and
construct the `LaunchDefinition` and then just pass it over to the
`LauncherSupport` (interal impl detail). We pass around the launch definition
to the forked mode launcher in the form of an xml which captures the necessary
details like what tests to launch and what listeners to use. Note that this xml
is an internal detail and can change over releases. I decided to capture these
details in a file and pass it to the `main` method instead of passing mutliple
different arguments for two reasons:
- Reduce the command line length when executing these forked tests
- Allow hierarchical representation of the launch definition details,
like which listener is for which test.
I have tested the fork support manually, but this needs more automated
tests. I'm in the process of writing those tests and also updating the manual
of this task. I wanted to get any review comments on these changes in the
meantime.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/jaikiran/ant junit5-fork
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/ant/pull/67.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #67
commit bd6480fc6184da09546c441413038087b6df0ed3
Author: Jaikiran Pai
Date: 2018-07-25T13:53:00Z
Support for fork mode in junitlauncher
---
-
To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
For additional commands, e-mail: dev-h...@ant.apache.org