Hi all, 

just a quick thought on extending Gradle's incremental build capabilities to 
the test runner. Interested in your opinions. 

The basic idea is to provide a way to only run test classes which are likely 
affected by recent code changes. I can think of two ways to determine which 
test classes should be run: 
1. Only run a test class if its subject(s) have changed. For this we'd need a 
way to specify what a test's subject(s) are. Spock has a @Subject annotation 
for this. 
2. Only run a test class if one of the classes it (transitively) depends on has 
changed. This might be costly to compute (not sure). 

Both strategies bear the risk that a test class won't be run although a change 
was made that affects the outcome of the test (e.g. when dependency injection 
is used or when a non-code file is changed). Do you think an incremental test 
runner could still be useful, or should we always play it safe and run all 
tests in a project (possibly in a smart order to reduce average time until a 
test fails)? Maybe incremental test running should be left to IDEs (for 
continuous testing)? 

Cheers, 
Peter

PS: Had problems to post to this list. Nabble didn't work, and neither did 
e-mail (although I'm subscribed to this list in Xircles). Hopefully it will 
work this time (after unsubscribing and resubscribing).

Reply via email to