org.mockejb
Class OptionalCactusTestCase

java.lang.Object
  extended byjunit.framework.Assert
      extended byjunit.framework.TestCase
          extended byorg.apache.cactus.ServletTestCase
              extended byorg.mockejb.OptionalCactusTestCase
All Implemented Interfaces:
junit.framework.Test

public class OptionalCactusTestCase
extends org.apache.cactus.ServletTestCase

Runs the test case on the server side under cactus or standalone on the client side. Concrete test cases extend this class. If "mockejb.cactus.mode" system property is set to true, the test case behaves as the Cactus' ServletTestCase, so it runs on the server. If the property is false or not set, Cactus is ignored completely and the test class runs on the client under JUnit. Subclasses can override isCactusEnabled() to use a different mechanism for turning cactus mode on and off.

Author:
Alexander Ananiev

Field Summary
 
Fields inherited from class org.apache.cactus.ServletTestCase
config, request, response, session
 
Constructor Summary
OptionalCactusTestCase(java.lang.String testName)
          Creates a new TestCase for the given test.
 
Method Summary
protected  boolean isCactusMode()
          Tests if the test should run in Cactus mode.
 boolean isRunningOnServer()
          Tests if the test is being executed on the app server.
 void runBare()
          Overrides the standard JUnit and Cactus method.
protected  void runBareLocally()
          This method is called by runBare when it determines that the test is running locally (on the client).
protected  void runTestLocally()
          Invokes the test method using reflection.
 
Methods inherited from class org.apache.cactus.ServletTestCase
runCactusTest
 
Methods inherited from class junit.framework.TestCase
countTestCases, createResult, getName, run, run, runTest, setName, setUp, tearDown, toString
 
Methods inherited from class junit.framework.Assert
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, fail, fail
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

OptionalCactusTestCase

public OptionalCactusTestCase(java.lang.String testName)
Creates a new TestCase for the given test.

Parameters:
testName - test name
Method Detail

isCactusMode

protected boolean isCactusMode()
Tests if the test should run in Cactus mode. Cactus mode is turned on if the system property "mockejb.cactus.mode" is set to "true". Subclasses can implement different way of specifying Cactus mode.

Returns:
true if "mockejb.cactus" system property set to true

isRunningOnServer

public boolean isRunningOnServer()
Tests if the test is being executed on the app server.

Returns:
true if the test runs on the app server

runBare

public void runBare()
             throws java.lang.Throwable
Overrides the standard JUnit and Cactus method. This allows to turn the cactus off for this test class even though it continues to extend ServletTestCase. The method first checks if the test runs on the client, in which case it calls runBareLocally/ If the test runs on the server, it calls "super" to delegate running the test to ServletTestCase

Throws:
java.lang.Throwable - in case of any problems in the test
See Also:
TestCase.runBare()

runBareLocally

protected void runBareLocally()
                       throws java.lang.Throwable
This method is called by runBare when it determines that the test is running locally (on the client). If the cactus is "on", this method simply calls "super". If the cactus is "off", it runs the code copied from JUnit, therefore disabling the override in Cactus.

Throws:
java.lang.Throwable - in case of any problems in the test

runTestLocally

protected void runTestLocally()
                       throws java.lang.Throwable
Invokes the test method using reflection. Standard JUnit logic is duplicated here. Using this method instead of runTest() enforces that the test always runs locally (on the client). Cactus overrides runTest() to run the test remotely, so using a different name ensures that it does not run.

Throws:
java.lang.Throwable - if any exception is thrown
See Also:
TestCase.runTest()