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 grails-rt.jar
.
Tested with IntelliJ IDEA 13 and Grails 2.3.5.