Heya,

I'm keen on solving this use case: developer in a large app has tons of
long running tests. He wants to run only a *single* test from the command
line (e.g. we currently support *all* tests from a *single* test class via
test.single).

There's also a pull request: https://github.com/gradle/gradle/pull/193 that
shows that the community is also keen on getting it sorted out.

How do we want approach this?

1. Make the test.includes / test.excludes more robust and support some kind
of notation like "SomeTest#someMethod". This is kind of awkward because
Test extends PatternFilterable that clearly defines what are includes and
excludes (they are not test methods, they are ant file patterns). On the
plus side, this would work with our existing means of specifying
includes/excludes (existing DSL, existing test.single property)

2. Add some new API for this, for example:

test.selection.include ...

It might be good to put the test selection api behind some new DSL
layer/object (e.g. 'selection') because it can potentially grow:
include/exclude tests by some custom criteria, e.g. test class hierarchy,
etc. BTW. for the latter we have use cases in our own codebase (cross
version tests now are picked up by naming convention but it would be nicer
if they were picked up by parent class, etc.).

If we go down this path, we need to add command line support for it and
perhaps consider deprecation of the existing include / exclude.

Do we have some other options? Thoughts?
-- 
Szczepan Faber
Principal engineer@gradle; Founder@mockito

Reply via email to