Grails Goodness: Run Forked Tests in IntelliJ IDEA
In the latest Grails releases we can execute our tests in so-called forked mode. This means a separate JVM is started with an isolated classpath from the Grails build system. When we want to run our tests in forked mode from within IntelliJ IDEA we get the following error:
Error running forked test-app: Could not load grails build listener class (Use --stacktrace to see the full trace). To make running tests in forked mode work with IntelliJ IDEA we must add one of the IntelliJ IDEA supplied JAR files to the Grails classpath.
We need to search for the file
grails-rt.jar in the directory where we installed IntelliJ IDEA. For example on Mac OSX this would be
Applications/IntelliJ IDEA 13.app/plugins/Grails/lib/grails-rt.jar. We need to copy this file to the
lib directory of our Grails project. On *nix systems we can actually define a soft link to this location in the
lib directory. For example with the following command
$ ln -s /Applications/IntelliJ\ IDEA\ 13.app/plugins/Grails/lib/grails-rt.jar lib/intellij-grails-rt.jar.
Now we can run our Grails forked tests from within IntelliJ IDEA. To debug our tests we must add the option
--debug-fork to the Run Configuration of the test.
We could also disable the forked mode for tests to run them in IntelliJ IDEA. We must then set
grails.project.fork.test = false in
grails-app/conf/BuildConfig.groovy. In non-forked mode we don't need to copy the file
Tested with IntelliJ IDEA 13 and Grails 2.3.5.