net.sourceforge.groboutils.junit.v1
Class TestRunnable

java.lang.Object
  extended byjunit.framework.Assert
      extended bynet.sourceforge.groboutils.junit.v1.TestRunnable
All Implemented Interfaces:
java.lang.Runnable
Direct Known Subclasses:
TestMonitorRunnable

public abstract class TestRunnable
extends junit.framework.Assert
implements java.lang.Runnable

Instances of this class only execute in the runTestRunnables method of the MultiThreadedTestRunner class. TestCases should define inner classes as a subclass of this, implement the runTest() method, and pass in the instantiated class as part of an array to the runTestRunnables method. Call delay( long ) to easily include a waiting period. This class allows for all assertions to be invoked, so that subclasses can be static or defined outside a TestCase. If an exception is thrown from the runTest() method, then all other test threads will terminate due to the error.

The runTest() method needs to be responsive to InterruptedException, resulting from the owning MultiThreadedTestRunner interrupting the thread in order to signal the early termination of the threads. The InterruptedExceptions may be propigated outside the runTest() implementation with no harmful effects. Note that this means that InterruptedExceptions are part of the framework, and as such carry information that your runTest() implementations cannot override; in other words, don't let your test propigate an InterruptedException to indicate an error.

Tests which perform a set of monitoring checks on the object-under-test should extend TestMonitorRunnable, since monitors run until told to stop. The Thread.stop() command will be sent with a MultiThreadedTestRunner.TestDeathException.

Since:
March 28, 2002
Version:
$Date: 2003/10/03 14:26:45 $
Author:
Matt Albrecht groboclown@users.sourceforge.net

Field Summary
protected static org.apache.log4j.Logger LOG
           
 
Constructor Summary
TestRunnable()
           
 
Method Summary
 void delay(long millis)
          Sleep for millis milliseconds.
 boolean isDone()
          Returns the status of the owning MultiThreadedTestRunner instance: true means that the tests have completed (monitors may still be active), and false means that the tests are still running.
 void run()
          Unable to make this a "final" method due to JDK 1.1 compatibility.
abstract  void runTest()
          Performs the set of processing or checks on the object-under-test, which will be in parallel with other TestRunnable instances.
 
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, toString, wait, wait, wait
 

Field Detail

LOG

protected static final org.apache.log4j.Logger LOG
Constructor Detail

TestRunnable

public TestRunnable()
Method Detail

runTest

public abstract void runTest()
                      throws java.lang.Throwable
Performs the set of processing or checks on the object-under-test, which will be in parallel with other TestRunnable instances.

The implementation should be responsive to InterruptedException exceptions or to the status of Thread.isInterrupted(), as that is the signal used to tell running TestRunnable instances to halt their processing; instances which do not stop within a reasonable time frame will have Thread.stop() called on them.

Non-monitor instances must have this method implemented such that it runs in a finite time; if any instance executes over the MultiThreadedTestRunner instance maximum time limit, then the MultiThreadedTestRunner instance assumes that a test error occurred.

Throws:
java.lang.Throwable - any exception may be thrown and will be reported as a test failure, except for InterruptedExceptions, which will be ignored.

delay

public void delay(long millis)
           throws java.lang.InterruptedException
Sleep for millis milliseconds. A convenience method.

Throws:
java.lang.InterruptedException - if an interrupt occured during the 8 sleep.

run

public void run()
Unable to make this a "final" method due to JDK 1.1 compatibility. However, implementations should not override this method.

Specified by:
run in interface java.lang.Runnable

isDone

public boolean isDone()
Returns the status of the owning MultiThreadedTestRunner instance: true means that the tests have completed (monitors may still be active), and false means that the tests are still running.

Returns:
true if the tests have completed their run, otherwise false.


Copyright © 2001-2003 by The GroboUtils Project