Class TestCase

java.lang.Object
junit.framework.Assert
junit.framework.TestCase
All Implemented Interfaces:
Test
Direct Known Subclasses:
ExceptionTestCase

public abstract class TestCase extends Assert implements Test
A test case defines the fixture to run multiple tests. To define a test case
1) implement a subclass of TestCase
2) define instance variables that store the state of the fixture
3) initialize the fixture state by overriding setUp
4) clean-up after a test by overriding tearDown.
Each test runs in its own fixture so there can be no side effects among test runs. Here is an example:
public class MathTest extends TestCase {
    protected double fValue1;
    protected double fValue2;

   protected void setUp() {
        fValue1= 2.0;
        fValue2= 3.0;
    }
}
For each test implement a method which interacts with the fixture. Verify the expected results with assertions specified by calling assertTrue with a boolean.
   public void testAdd() {
       double result= fValue1 + fValue2;
       assertTrue(result == 5.0);
   }
Once the methods are defined you can run them. The framework supports both a static type safe and more dynamic way to run a test. In the static way you override the runTest method and define the method to be invoked. A convenient way to do so is with an anonymous inner class.
TestCase test= new MathTest("add") {
       public void runTest() {
           testAdd();
       }
};
test.run();
The dynamic way uses reflection to implement runTest. It dynamically finds and invokes a method. In this case the name of the test case has to correspond to the test method to be run.
TestCase test= new MathTest("testAdd");
test.run();
The tests to be run can be collected into a TestSuite. JUnit provides different test runners which can run a test suite and collect the results. A test runner either expects a static method suite as the entry point to get a test to run or it will extract the suite automatically.
public static Test suite() {
     suite.addTest(new MathTest("testAdd"));
     suite.addTest(new MathTest("testDivideByZero"));
     return suite;
 }
See Also:
  • Constructor Details

    • TestCase

      public TestCase()
      No-arg constructor to enable serialization. This method is not intended to be used by mere mortals without calling setName().
    • TestCase

      public TestCase(String name)
      Constructs a test case with the given name.
  • Method Details

    • countTestCases

      public int countTestCases()
      Counts the number of test cases executed by run(TestResult result).
      Specified by:
      countTestCases in interface Test
    • createResult

      protected TestResult createResult()
      Creates a default TestResult object
      See Also:
    • run

      public TestResult run()
      A convenience method to run this test, collecting the results with a default TestResult object.
      See Also:
    • run

      public void run(TestResult result)
      Runs the test case and collects the results in TestResult.
      Specified by:
      run in interface Test
    • runBare

      public void runBare() throws Throwable
      Runs the bare test sequence.
      Throws:
      Throwable - if any exception is thrown
    • runTest

      protected void runTest() throws Throwable
      Override to run the test and assert its state.
      Throws:
      Throwable - if any exception is thrown
    • setUp

      protected void setUp() throws Exception
      Sets up the fixture, for example, open a network connection. This method is called before a test is executed.
      Throws:
      Exception
    • tearDown

      protected void tearDown() throws Exception
      Tears down the fixture, for example, close a network connection. This method is called after a test is executed.
      Throws:
      Exception
    • toString

      public String toString()
      Returns a string representation of the test case
      Overrides:
      toString in class Object
    • getName

      public String getName()
      Gets the name of a TestCase
      Returns:
      returns a String
    • setName

      public void setName(String name)
      Sets the name of a TestCase
      Parameters:
      name - The name to set