tl;dr - A proposal for config independence for groups/excludeGroups
properties and some special keywords for ALL, NONE, and UNCATEGORIZED
groups.

***

In the Apache Accumulo project, we're currently in process of trying to
make use of JUnit categories to separate different classes of tests.

So, we're using the maven-surefire-plugin and maven-failsafe-plugin
configuration properties: groups, excludeGroups

One thing we noticed was that the user property is the same for both
plugins. This is a problem, because one cannot pass in a system property on
the command-line to affect one without affecting the other.

I propose that maven-surefire-plugin and maven-failsafe-plugin deprecate
the existing groups/excludeGroups properties, and replace them with
tests.groups/tests.excludeGroups, and it.groups/it.excludeGroups. (This
should probably be done for other shared properties as well.)

Users can simulate this by doing something like this:
<groups>${it.groups}</groups>

However, this may cause problems if the property is not defined.... I
haven't tested to be sure.

***

That leads me to a question and a second proposal:
Is there a way to specify uncategorized test classes? Or all test classes?
Or none?

If not, I would like to propose that some special keywords be created which
can represent:
_ALL_, _NONE_, _UNCATEGORIZED_ (or similar)

That way, users can do things like:
<groups>my.special.Category,_UNCATEGORIZED_</groups><!-- logical AND -->
<excludeGroups>_NONE_</excludeGroups>
or
<groups>_NONE_</groups>
or
<groups>_ALL_</groups>

These keywords may require some support from the underlying test framework,
like JUnit, so I can understand if these keywords cannot happen.

Even if the keywords cannot be made to work, I still think it'd be good to
deprecate-and-separate the properties for the two plugins, so they can be
controlled independently with user properties.

Thanks.

Reply via email to