Class OnlineTestCase
- Object
-
- Assert
-
- TestCase
-
- OnlineTestCase
-
- All Implemented Interfaces:
Test
public abstract class OnlineTestCase extends TestCaseTest support for test cases that require an "online" resource, such as an external server or database.Online tests work off of a "fixture". A fixture is a properties file which defines connection parameters for some remote service. Each online test case must define the id of the fixture is uses with
getFixtureId().Fixtures are stored under the users home directory, under the "
.geotools" directory. Dots "." in the fixture id represent a subdirectory path under this configuration file directory. For example, a fixture ida.b.foowould be resolved to.geotools/a/b/foo.properties.In the event that a fixture does not exist, the test case is aborted.
Online tests connect to remote / online resources. Test cases should do all connection / disconnection in the
connect()anddisconnect()methods.The default behaviour of this class is that if
connect()throws an exception, the test suite is disabled, causing each test to pass without being run. In addition, exceptions thrown bydisconnect()are ignored. This behaviour allows tests to be robust against transient outages of online resources, but also means that local software failures inconnect()ordisconnect()will be silent.To have exceptions thrown by
connect()anddisconnect()cause tests to fail, setskip.on.failure=falsein the fixture property file. This restores the traditional behaviour of unit tests, that is, that exceptions cause unit tests to fail.- Since:
- 2.4
- Author:
- Justin Deoliveira, The Open Planning Project, Ben Caradoc-Davies, CSIRO Earth Science and Resource Engineering
-
-
Field Summary
Fields Modifier and Type Field Description protected PropertiesfixtureThe test fixture,nullif the fixture is not available.protected static Map<String,Boolean>foundA static map which tracks which fixture files can not be found.protected static Map<String,Boolean>onlineA static map which tracks which fixtures are offline.static StringONLINE_TEST_PROFILESystem property set to totally disable any online testsstatic StringSKIP_ON_FAILURE_DEFAULTThe default value used forSKIP_ON_FAILURE_KEYif it is not present.static StringSKIP_ON_FAILURE_KEYThe key in the test fixture property file used to set the behaviour of the online test ifconnect()fails.protected booleanskipOnFailureFlag that determines effect of exceptions in connect/disconnect.
-
Constructor Summary
Constructors Constructor Description OnlineTestCase()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voidconnect()Connection method, called fromsetUp().protected PropertiescreateExampleFixture()Allows test to create a sample fixture for users.protected PropertiescreateOfflineFixture()Allows tests to create an offline fixture in cases where the user has not specified an explicit fixture for the test.protected voiddisconnect()Disconnection method, called fromtearDown().protected abstract StringgetFixtureId()The fixture id for the test case.protected booleanisOnline()Tests if external resources needed to run the tests are online.voidrun(TestResult result)Override which checks if the fixture is available.protected voidsetUp()Loads the test fixture for the test case.protected voidsetUpInternal()Method for subclasses to latch onto the setup phase.protected voidtearDown()Tear down method for test, calls through todisconnect()if the test is active.protected voidtearDownInternal()Method for subclasses to latch onto the teardown phase.-
Methods inherited from class TestCase
assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, createResult, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, runBare, runTest, setName, toString
-
-
-
-
Field Detail
-
ONLINE_TEST_PROFILE
public static final String ONLINE_TEST_PROFILE
System property set to totally disable any online tests- See Also:
- Constant Field Values
-
SKIP_ON_FAILURE_KEY
public static final String SKIP_ON_FAILURE_KEY
The key in the test fixture property file used to set the behaviour of the online test ifconnect()fails.- See Also:
- Constant Field Values
-
SKIP_ON_FAILURE_DEFAULT
public static final String SKIP_ON_FAILURE_DEFAULT
The default value used forSKIP_ON_FAILURE_KEYif it is not present.- See Also:
- Constant Field Values
-
online
protected static Map<String,Boolean> online
A static map which tracks which fixtures are offline. This prevents continually trying to run a test when an external resource is offline.
-
found
protected static Map<String,Boolean> found
A static map which tracks which fixture files can not be found. This prevents continually looking up the file and reporting it not found to the user.
-
fixture
protected Properties fixture
The test fixture,nullif the fixture is not available.
-
skipOnFailure
protected boolean skipOnFailure
Flag that determines effect of exceptions in connect/disconnect. If true (the default), exceptions in connect cause the the test to be disabled, and exceptions in disconnect to be ignored. If false, exceptions will be rethrown, and cause the test to fail.
-
-
Method Detail
-
run
public void run(TestResult result)
Override which checks if the fixture is available. If not the test is not executed.- Specified by:
runin interfaceTest- Overrides:
runin classTestCase
-
setUp
protected final void setUp() throws ExceptionLoads the test fixture for the test case.The fixture id is obtained via
getFixtureId().- Overrides:
setUpin classTestCase- Throws:
Exception
-
setUpInternal
protected void setUpInternal() throws ExceptionMethod for subclasses to latch onto the setup phase.- Throws:
Exception
-
tearDown
protected final void tearDown() throws ExceptionTear down method for test, calls through todisconnect()if the test is active.- Overrides:
tearDownin classTestCase- Throws:
Exception
-
tearDownInternal
protected void tearDownInternal() throws ExceptionMethod for subclasses to latch onto the teardown phase.- Throws:
Exception
-
isOnline
protected boolean isOnline() throws ExceptionTests if external resources needed to run the tests are online.This method can return false to indicate the online resources are not up, or can simply throw an exception.
- Returns:
- True if external resources are online, otherwise false.
- Throws:
Exception- Any errors that occur determining if online resources are available.
-
connect
protected void connect() throws ExceptionConnection method, called fromsetUp().Subclasses should do all initialization / connection here. In the event of a connection not being available, this method should throw an exception to abort the test case.
- Throws:
Exception- if the connection failed.
-
disconnect
protected void disconnect() throws ExceptionDisconnection method, called fromtearDown().Subclasses should do all cleanup here.
- Throws:
Exception- if the disconnection failed.
-
createOfflineFixture
protected Properties createOfflineFixture()
Allows tests to create an offline fixture in cases where the user has not specified an explicit fixture for the test.Note, that this should method should on be implemented if the test case is created of creating a fixture which relies soley on embedded or offline resources. It should not reference any external or online resources as it prevents the user from running offline.
-
createExampleFixture
protected Properties createExampleFixture()
Allows test to create a sample fixture for users.If this method returns a value the first time a fixture is looked up and not found this method will be called to create a fixture file with the same id, but suffixed with .template.
-
getFixtureId
protected abstract String getFixtureId()
The fixture id for the test case.This name is hierarchical, similar to a java package name. Example:
"postgis.demo_bc".- Returns:
- The fixture id.
-
-