Integration tests differ from unit tests in that you have full access to the Griffon application within the test. The following is an integration test created using the default template

import griffon.core.GriffonApplication
import griffon.test.*

class SomeControllerTests extends GriffonUnitTestCase { GriffonApplication app

protected void setUp() { super.setUp() }

protected void tearDown() { super.tearDown() }

void testSomething() { } }

As with unit tests, you have access to all mocking facilities exposed by GriffonUnitTestCase within this test, but you also have access to a full running Griffon application. By default this application is bootstrapped to the INITIALIZE phase. It's up to you to instruct the application to move to another phase depending on what you want to test (refer to startup(), ready(), realize() and show() methods).

The type of application to be run depends on the type of project and/or a configuration flag as explained next: