The latest version of the Webtest Plugin has been released for Grails 1.0.4. A release for 1.1 will follow shortly, with a newer WebTest snapshot which is now Java 5 dependent.
Release Notes
setUp/tearDown at the method and class level
classSetUp() and classTearDown() are run as individual test cases. SetUp() and tearDown() are run as the first and last steps of each test case.
Superclass changes in WebTest
The WebTest superclass now automatically runs all methods starting with test. This saves you having to manually maintain the suite method unless you really want to for test order reasons.
WebTest will also generate the test case name from the class and method name removing the need for repetitive webtest('blah'){...} code. The generated test name also makes it much easir to find the failing test from the generate reports.
MethodMissing code has been added so you can refactor a group of steps without having to wrap them in and ant.group closure.
You can now call config() as the first step in your test method to set WebTest options like host, port and ajax support
-nostart option allows you to runthe tests against a server that is already running. It should come after run-webtest on the command line
System parameters now passed through to WebTest. They need to be placed directly after grails on the command line e.g. grails -Dwt.headless=true run-webtest
-Dwt.headless=true to hide Swing monitor and stop browser launching
-Dserver.port=XXXX to get the tests to run against a server on a non-default port
The plugin has been updated with a recent snapshot version of WebTest which includes an update of HtmlUnit to version 2.3
Application lib folder now on WebTest classpath. This avoids the need to duplicate/move libraries into webtest/home/lib
Custom steps
You can now extend com.canoo.webtest.steps.Step by placing groovy classes in webtest/tests/step. They will be automatically loaded at runtime and allow for easy testing of complicated scenarios such as JSON interfaces and email integration
The last project I worked on used these custom steps to start, check then stop an embedded Wiser SMTP server for testing email functionality.
Upgrade Instructions
delete plugins/webtest-0.x
svn delete webtest/home, commit.
This avoids svn issues as the install script deletes the folder and extracts the latest build over the top, removing the .svn directories
grails install-plugin webtest
6 comments:
Nice plug-in Lee, posted an announcement here: http://tinyurl.com/bubcbp
Please feel free to add any future releases there as well.
Regards,
Schalk
Very Good Plugin
:)
Nice post lee. I was tinkering with some more advanced Custom step creation and when i investigated why something was not working, I found that the grails classpath doesn't appear to be getting on the webtest classpath.
The file 'call-webtest.xml' references
<fileset dir="${grailsHome}/lib" includes="commons-cli*.jar"/> only.
Suggesting to me that only the commons-cli.jar is sourced from grails CP into webtest cp.
Would I be reading this right?
Hi J,
yes, only some of the Jars are taken across to the WebTest classpath. This was around before I started on the plugin but I think it was to avoid library clashes between Grails and WebTest. Unfortunately it means you cannot reference your grails application code or plugins from your webtests. There is a JIRA related to fixing this so if you have any ideas on how it could be achieved please add them to the issue.
cheers
Lee
Lee,
Thanks for your note. I posted a short writeup on using a custom webtest step to test a JSON controller action.
http://act.ualise.com/blogs/continuous-innovation/2009/07/json-webtests-with-grails/
Cheers
Jerome
Post a Comment