Unit Testing Grails in Eclipse
For the past several weeks, I’ve been working on a Grails app in my spare time, and I’m really excited about the future of Grails. However, I’ve been a bit disappointed in the tooling currently available. Myself and many of my clients use Eclipse, and at this point the Eclipse support for Grails is less than ideal.
Spring Source’s recent acquistion of G2One will really help move the Eclipse support forward. Here’s a recent interview with Grails founder Graeme Rocher in which he discusses how Spring Source will help drive Grails tool support within Eclipse.
One of the largest frustrations I’ve had with the Eclipse plugin is the setup necessary to run a grails unit test. After I first setup my grails project in Eclipse, I tried to create a simple groovy unit test and run it. As with Java unit tests, I right clicked on the class and selected run as junit test. Each time I ran the test I received the following error.
“Error running MyGroovyTest.groovy failed to find a class file, ensure the Groovy output folder is on the classpath”
After a lot of digging around I was finally able to work through these issues and figure out a way to execute grails unit tests within eclipse. Here are the steps I used to get the tests working.
- Right-click on the project and select Properties > Groovy Project Properties.
- Uncheck “Disable Groovy Compiler Generating Class Files”
- Modify the “Groovy compiler output location” to “bin-groovy”
- Select “Java Build Path”
- Modify the Default Output folder to “/bin” (I need to test this again to see if this step is required).
- From the same Java Build Path dialog select Libraries > Add Class Folder…
- Check bin-groovy.
- Now run the unit test by right clicking on the groovy file and it should work.
It’s quite an involved process, but it works. If anyone has a simpler solution, I’d be really glad to hear it. I’m using Eclipse Ganymede, Grails 1.0.4, and Groovy Plugin 22.214.171.124807211457.
Cleaning up these types of issues within Eclipse will be critical to the success of Grails, and I’m glad to hear that SpringSource and Grails will be focusing their efforts on tooling in the near future.