ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Guilherme Silveira" <guilherme.silve...@caelum.com.br>
Subject parallel junit tests
Date Wed, 17 Sep 2008 15:33:19 GMT
Hello there guys,

Ive read two threads on parallelizing junit tests on this list and a
lot of info on the web itself.

Ill point out our current problems with <parallel> tag and
parallel-junit project and then tell about the patch we have created
for ant 1.7.1 which allows parallelized running of perTest tests.

The parallel tag surely works fine, but I have to decide which tests
will run in each thread, therefore if some thread stops in, lets say 3
minutes, the other threads might run up to 10 minutes. If the first
thread did not stop at all, it could have run the tests designed for
the second thread. Therefore parallel surely works, but doesnt work as
a thread pool (of course, its not its intention at all)... so its not
the best solution for running JUnit tests in parallel.

So lets think about parallel-junit project.
The issue occurs with integration tests which use Selenium as its main
tool. As we do not want to open a browser window for each test method,
the Selenium reference is saved as a static reference in our BaseTest
class. (Not so cute but this is the only solution  - @BeforeClass
initilizing it, @AfterClass destroying it - appart from ThreadLocal
issues).
If I run all tests in the same VM and use Parallel JUnit TestSuite, it
will give me ackward problems due to mutual access to the Selenium
static variable... so I had to run it in differente VM's but who
decides which tests run in which VM? Ant... not Parallell JUnit...

Therefore our solution was to simply replace one method (and a few
minor methods - which can be refactored, of course) to allow JUnitTask
to accept the number of threads to run in parallel and use workers to
delegate the testing to.
The whole solution took less than 50 lines I believe and work with
perTest mode just fine.

It works fine, running all tests in parallel. Who can benefit from it?
Those who run their tests in multi-core machines can simply change
their build.xml file by adding an attribute and thats it.

What do you think? Oppinions? Suggestions? Problems? Is this a desired
feature for JUnitTask? Should I send in the patch to the list?

Regards

Guilherme Silveira

-- 
Guilherme Silveira
--------------------------------------------------
guilherme.silveira@caelum.com.br
Caelum - Ensino e Soluções em Java
www.caelum.com.br

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org


Mime
View raw message