By default, tests run in
hosted mode as normal Java
bytecode in a JVM. Overriding this default behavior requires passing
arguments to the GWT shell. Arguments cannot be passed directly through the
command line, because normal command-line arguments go directly to the
JUnit runner. Instead, define the system property gwt.args
to pass arguments to GWT. For example, to run in
web mode, declare
-Dgwt.args="-web"
as a JVM argument when invoking JUnit. To
get a full list of supported options, declare
-Dgwt.args="-help"
(instead of running the test, help is
printed to the console).
GWT includes a handy junitCreator tool that will generate a starter test case for you, plus scripts for testing in both hosted mode and web mode. But here are the steps if you want to set it up by hand:
src
directorybin
directorygwt-user.jar
gwt-dev-windows.jar
(or gwt-dev-linux.jar
)junit.jar
com.example.foo.client.FooTest
test case.
public class FooTest extends GWTTestCase { /* * Specifies a module to use when running this test case. The returned * module must cause the source for this class to be included. * * @see com.google.gwt.junit.client.GWTTestCase#getModuleName() */ public String getModuleName() { return "com.example.foo.Foo"; } public void testStuff() { assertTrue(2 + 2 == 4); } }Create the
com.example.foo.Foo
module.
<module> <!-- Module com.example.foo.Foo --> <!-- Standard inherit. --> <inherits name='com.google.gwt.user.User'/> <!-- implicitly includes com.example.foo.client package --> <!-- OPTIONAL STUFF FOLLOWS --> <!-- It's okay for your module to declare an entry point. --> <!-- This gets ignored when running under JUnit. --> <entry-point class='com.example.foo.FooModule'/> <!-- You can also test remote services during a JUnit run. --> <servlet path='/foo' class='com.example.foo.server.FooServiceImpl'/> </module>
com.example.foo.client
(or any subpackage) can share the com.example.foo.Foo
module.