Most visited

Recently visited

Added in API level 1

TestCase

public abstract class TestCase
extends Assert implements Test

java.lang.Object
   ↳ junit.framework.Assert
     ↳ junit.framework.TestCase
Known Direct Subclasses
Known Indirect Subclasses


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(String, boolean) 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:

Summary

Public constructors

TestCase()

No-arg constructor to enable serialization.

TestCase(String name)

Constructs a test case with the given name.

Public methods

int countTestCases()

Counts the number of test cases executed by run(TestResult result).

String getName()

Gets the name of a TestCase

TestResult run()

A convenience method to run this test, collecting the results with a default TestResult object.

void run(TestResult result)

Runs the test case and collects the results in TestResult.

void runBare()

Runs the bare test sequence.

void setName(String name)

Sets the name of a TestCase

String toString()

Returns a string representation of the test case

Protected methods

TestResult createResult()

Creates a default TestResult object

void runTest()

Override to run the test and assert its state.

void setUp()

Sets up the fixture, for example, open a network connection.

void tearDown()

Tears down the fixture, for example, close a network connection.

Inherited methods

From class junit.framework.Assert
From class java.lang.Object
From interface junit.framework.Test

Public constructors

TestCase

Added in API level 1
TestCase ()

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

TestCase

Added in API level 1
TestCase (String name)

Constructs a test case with the given name.

Parameters
name String

Public methods

countTestCases

Added in API level 1
int countTestCases ()

Counts the number of test cases executed by run(TestResult result).

Returns
int

getName

Added in API level 1
String getName ()

Gets the name of a TestCase

Returns
String the name of the TestCase

run

Added in API level 1
TestResult run ()

A convenience method to run this test, collecting the results with a default TestResult object.

Returns
TestResult

See also:

run

Added in API level 1
void run (TestResult result)

Runs the test case and collects the results in TestResult.

Parameters
result TestResult

runBare

Added in API level 1
void runBare ()

Runs the bare test sequence.

Throws
Throwable if any exception is thrown

setName

Added in API level 1
void setName (String name)

Sets the name of a TestCase

Parameters
name String: the name to set

toString

Added in API level 1
String toString ()

Returns a string representation of the test case

Returns
String a string representation of the object.

Protected methods

createResult

Added in API level 1
TestResult createResult ()

Creates a default TestResult object

Returns
TestResult

See also:

runTest

Added in API level 1
void runTest ()

Override to run the test and assert its state.

Throws
Throwable if any exception is thrown

setUp

Added in API level 1
void setUp ()

Sets up the fixture, for example, open a network connection. This method is called before a test is executed.

Throws
Exception

tearDown

Added in API level 1
void tearDown ()

Tears down the fixture, for example, close a network connection. This method is called after a test is executed.

Throws
Exception

Hooray!