Speeding up tests in Ant
Posted by andy in : Agile,Software,Testing on September 21, 2005. There are no responses »I have always been frustrated at how slow ant is at running my tests. If I run my tests in Intellij it takes around 4 minutes to run 1300 tests. The same tests in ant take over 12 minutes.
This is not such a big deal when I am developing as I run them all in Intellij. The problem is that the Continuous Integration server runs ant. If the automatic build takes too long following a commit, I will have started working on something else.
I was telling people this as a recent Agile Summer School that Duncan Pierce and I ran. Justin Forder did some digging around and found the magic forkmode attribute.
You normally fork a new JVM to run the tests since it isolates your tests from Ant’s environment (which places a lot of libraries on the classloader). The reason it is slow is that the default behavior is to fork a new JVM for each test case class. Now that is a of forking.
It turns out that Ant 1.6.2 introduced a new junit task attribute called “forkmode“. If you set it to “once“, Ant will fork a single Java VM for all your tests classes.
Fantastic, the build server is now running all the tests in 6 minutes (it is not as fast as my development machine).
Thanks to Justin Forder for pointing this out. See Stefan Bodewig’s Weblog for more info

