Testing with Embed for Vaadin

Submitted on 31 March 2012

In order to execute integration tests of a web application, there are not so many tools available. One of such tools is JBoss Arquilian: it let you create an archive of your to-be-tested Java classes. Embed Vaadin does the same, but is specifically targeted at Vaadin applications and components!

Just select the component you want to test, and presto, it’s wrapped in a dummy application and launched in an embedded Tomcat:

EmbedVaadin.forComponent(new FormAdvancedLayoutExample()).wait(false).start();

If you need to go beyond that and test the full application, that’s also possible. The library takes care of instantiating the application class and all the underlying gory details.

EmbedVaadin.forApplication(EmbedApplication.class).wait(false).start();

Of course, there are configuration parameters. For example, you can choose the HTTP port (in order to avoid port conflict) and to launch a browser window. Presto, your integration test is ready to run!

EmbedVaadin.forApplication(EmbedApplication.class).withHttpPort(8888).wait(true).openBrowser(true).start();

For Maven users, the good news is that the add-on is readily provided as a Maven dependency:

<dependency>
    <groupId>com.bsb.common.vaadin</groupId>
    <artifactId>com.bsb.common.vaadin.embed</artifactId>
    <version>0.5</version>
    <scope>test</scope>
</dependency>

For Vaadin 7, please use:

<dependency>
    <groupId>com.bsb.common.vaadin</groupId>
    <artifactId>com.bsb.common.vaadin7.embed</artifactId>
    <version>0.5</version>
    <scope>test</scope>
</dependency>

For those wishing to go further, a full-fledged example is available on Github.

Note that Embed Vaadin is available under the friendly Apache 2.0 license.