public abstract class

GWTTestCase

extends TestCase
java.lang.Object
   ↳ TestCase
     ↳ com.google.gwt.junit.client.GWTTestCase
Known Direct Subclasses

Class Overview

Acts as a bridge between the JUnit environment and the GWT environment. We hook the run method and stash the TestResult object for later communication between the test runner and the unit test shell that drives the test case inside a hosted browser.

There are two versions of this class. This version is the binary version that derives from JUnit's TestCase and handles all the work of starting up the GWT environment. The other version is a translatable class that is used within the browser. See the translatable subpackage for the translatable implementation.

Summary

Nested Classes
class GWTTestCase.BaseStrategy The base class for strategies to use for tests. 
class GWTTestCase.TestModuleInfo Information about a synthetic module used for testing. 
Fields
public static final Map<StringGWTTestCase.TestModuleInfo> ALL_GWT_TESTS Records all live GWTTestCases by synthetic module name so we can optimize run they are compiled and run.
protected TestResult testResult Object that collects the results of this test case execution.
Public Constructors
GWTTestCase()
A new instance of your subclass is constructed for each test method that is to be run.
Public Methods
final void addCheckpoint(String msg)
This method is deprecated. implementation removed
boolean catchExceptions()
Determines whether or not exceptions will be caught by the test fixture.
final void clearCheckpoints()
This method is deprecated. implementation removed
static String[] getAllTestModuleNames()
Get the names of all test modules.
final String[] getCheckpoints()
This method is deprecated. implementation removed
static int getModuleCount()
Get the number of modules.
abstract String getModuleName()
Specifies a module to use when running this test case.
JUnitShell.Strategy getStrategy()
Get the GWTTestCase.BaseStrategy to use when compiling and running this test.
final String getSyntheticModuleName()
Get the synthetic module name, which includes the synthetic extension defined by the GWTTestCase.BaseStrategy.
static GWTTestCase.TestModuleInfo getTestsForModule(String syntheticModuleName)
Get the set of all JUnitHost.TestInfo for the specified module.
boolean isPureJava()
Returns whether this test case should be run in pure Java mode (non-GWT).
final void run(TestResult result)
Stashes result so that it can be accessed during runTest().
void setForcePureJava(boolean forcePureJava)
Specifies whether this test case should be always run in pure Java mode (non-GWT).
void setName(String name)
Protected Methods
JUnitShell.Strategy createStrategy()
Creates the test strategy to use (see getStrategy()).
final void delayTestFinish(int timeoutMillis)
Put the current test in asynchronous mode.
final void finishTest()
Cause this test to succeed during asynchronous mode.
void gwtSetUp()
A replacement for JUnit's setUp() method.
void gwtTearDown()
A replacement for JUnit's tearDown() method.
void runTest()
Runs the test via the JUnitShell environment.
final void setUp()
This method has been made final to prevent you from accidentally running client code outside of the GWT environment.
boolean supportsAsync()
Returns true if this test case supports asynchronous mode.
final void tearDown()
This method has been made final to prevent you from accidentally running client code outside of the GWT environment.
[Expand]
Inherited Methods
From class java.lang.Object

Fields

public static final Map<StringGWTTestCase.TestModuleInfo> ALL_GWT_TESTS

Records all live GWTTestCases by synthetic module name so we can optimize run they are compiled and run. Ordered so that we can precompile the modules in the order that they will run.

protected TestResult testResult

Object that collects the results of this test case execution.

Public Constructors

public GWTTestCase ()

A new instance of your subclass is constructed for each test method that is to be run. You should avoid running code in your subclass constructor, initializer blocks, and field initializations, because if those code blocks must be runnable outside of the GWT environment. As an example of what could go wrong if you run code there, trying to run a JSNI method could generate an UnsatisfiedLinkError, and trying to call create(Class) could throw an UnsupportedOperationException. Instead, override gwtSetUp() and perform any initialization code there.

Public Methods

public final void addCheckpoint (String msg)

This method is deprecated.
implementation removed

Does nothing.

public boolean catchExceptions ()

Determines whether or not exceptions will be caught by the test fixture. Override this method and return false to let exceptions escape to the browser. This will break the normal JUnit reporting functionality, but can be useful in Production Mode with a JavaScript debugger to pin down where exceptions are originating.

Returns
  • true for normal JUnit behavior, or false to disable normal JUnit getException reporting

public final void clearCheckpoints ()

This method is deprecated.
implementation removed

Does nothing.

public static String[] getAllTestModuleNames ()

Get the names of all test modules.

Returns
  • all test module names

public final String[] getCheckpoints ()

This method is deprecated.
implementation removed

Returns a zero-length array.

public static int getModuleCount ()

Get the number of modules.

Returns
  • the module count.

public abstract String getModuleName ()

Specifies a module to use when running this test case. Subclasses must return the name of a module that will cause the source for that subclass to be included.

Returns
  • the fully qualified name of a module, or null to run as a pure Java (non-GWT) test case (same effect as passing true to setForcePureJava(boolean))
See Also

public JUnitShell.Strategy getStrategy ()

Get the GWTTestCase.BaseStrategy to use when compiling and running this test.

Returns

public final String getSyntheticModuleName ()

Get the synthetic module name, which includes the synthetic extension defined by the GWTTestCase.BaseStrategy.

Returns
  • the synthetic module name, or null if this test case is run in pure Java mode (non-GWT)
See Also

public static GWTTestCase.TestModuleInfo getTestsForModule (String syntheticModuleName)

Get the set of all JUnitHost.TestInfo for the specified module.

Parameters
syntheticModuleName the synthetic module name
Returns
  • all tests for the module

public boolean isPureJava ()

Returns whether this test case should be run in pure Java mode (non-GWT). Returns true if and only if getModuleName() returns null, or setForcePureJava(boolean) was last invoked with true.

public final void run (TestResult result)

Stashes result so that it can be accessed during runTest().

public void setForcePureJava (boolean forcePureJava)

Specifies whether this test case should be always run in pure Java mode (non-GWT). Passing true has the same effect as returning null in getModuleName(). The setting is false by default.

Parameters
forcePureJava true to always run this test case in pure Java mode (non-GWT); false to run this test case in GWT mode if getModuleName() does not return null
See Also

public void setName (String name)

Protected Methods

protected JUnitShell.Strategy createStrategy ()

Creates the test strategy to use (see getStrategy()).

protected final void delayTestFinish (int timeoutMillis)

Put the current test in asynchronous mode. If the test method completes normally, this test will not immediately succeed. Instead, a delay period begins. During the delay period, the test system will wait for one of three things to happen:

  1. If finishTest() is called before the delay period expires, the test will succeed.
  2. If any getException escapes from an event handler during the delay period, the test will error with the thrown getException.
  3. If the delay period expires and neither of the above has happened, the test will error with a TimeoutException.

This method is typically used to test event driven functionality.

Example: {@example com.google.gwt.examples.AsyncJUnitExample#testTimer()}

Parameters
timeoutMillis how long to wait before the current test will time out
See Also

protected final void finishTest ()

Cause this test to succeed during asynchronous mode. After calling delayTestFinish(int), call this method during the delay period to cause this test to succeed. This method is typically called from an event handler some time after the test method returns control to the caller.

Calling this method before the test method completes, will undo the effect of having called delayTestFinish(). The test will revert to normal, non-asynchronous mode.

Example: {@example com.google.gwt.examples.AsyncJUnitExample#testTimer()}

Throws
IllegalStateException if this test is not in asynchronous mode
UnsupportedOperationException if supportsAsync() is false

protected void gwtSetUp ()

A replacement for JUnit's setUp() method. This method runs once per test method in your subclass, just before your each test method runs and can be used to perform initialization. Override this method instead of setUp(). This method is run even in pure Java mode (non-GWT).

Throws
Exception

protected void gwtTearDown ()

A replacement for JUnit's tearDown() method. This method runs once per test method in your subclass, just after your each test method runs and can be used to perform cleanup. Override this method instead of tearDown(). This method is run even in pure Java mode (non-GWT).

Throws
Exception

protected void runTest ()

Runs the test via the JUnitShell environment. Do not override or call this method.

Throws
Throwable

protected final void setUp ()

This method has been made final to prevent you from accidentally running client code outside of the GWT environment. Please override gwtSetUp() instead.

Throws
Exception

protected boolean supportsAsync ()

Returns true if this test case supports asynchronous mode. By default, this is set to true.

protected final void tearDown ()

This method has been made final to prevent you from accidentally running client code outside of the GWT environment. Please override gwtTearDown() instead.

Throws
Exception