Functional tests involve making HTTP requests against the running application and verifying the resultant behaviour. Grails does not ship with any support for writing functional tests directly, but there are several plugins available for this.
Consult the documentation for each plugin for it's capabilities.
Common Options
There are options that are common to all plugins that control how the Grails application is launched, if at all.
inline
The
-inline
option specifies that the grails application should be started inline (i.e. like
run-app
).
This option is implicitly set unless the baseUrl
or war
options are setwar
The
-war
option specifies that the grails application should be packaged as a war and started. This is useful as it tests your application in a production like state, but it has a longer startup time than the
-inline
option. It also runs the war in a forked JVM, meaning that you cannot access any internal application objects.
grails test-app functional: -war
Note that the same build/config options for the
run-war command apply to functional testing against the WAR.
https
The
-https
option results in the application being able to receive https requests as well as http requests. It is compatible with both the
-inline
and
-war
options.
grails test-app functional: -https
Note that this does not change the test
base url to be https, it will still be http unless the
-httpsBaseUrl
option is also given.
httpsBaseUrl
The
-httpsBaseUrl
causes the implicit base url to be used for tests to be a https url.
grails test-app functional: -httpsBaseUrl
This option is ignored if the
-baseUrl
option is given.
baseUrl
The
baseUrl
option allows the base url for tests to be specified.
grails test-app functional: -baseUrl=http://mycompany.com/grailsapp
This option will prevent the local grails application being started unless
-inline
or
-war
are given as well. If you want to use a custom base url, but still want to test against the local Grails application you
must specify one of either the
-inline
or
-war
options.