| package test.prefs.example; |
| |
| /** |
| * A test case defines the fixture to run multiple tests. To define a test case<br> |
| * 1) implement a subclass of TestCase<br> |
| * 2) define instance variables that store the state of the fixture<br> |
| * 3) initialize the fixture state by overriding <code>setUp</code><br> |
| * 4) clean-up after a test by overriding <code>tearDown</code>.<br> |
| * Each test runs in its own fixture so there can be no side effects among test |
| * runs. Here is an example: |
| * |
| * <pre> |
| * public class MathTest extends TestCase { |
| * protected double fValue1; |
| * protected double fValue2; |
| * |
| * protected void setUp() { |
| * fValue1 = 2.0; |
| * fValue2 = 3.0; |
| * } |
| * } |
| * </pre> |
| * |
| * For each test implement a method which interacts with the fixture. Verify the |
| * expected results with assertions specified by calling <code>assertTrue</code> |
| * with a boolean. |
| * |
| * <pre> |
| * public void testAdd() { |
| * double result = fValue1 + fValue2; |
| * assertTrue(result == 5.0); |
| * } |
| * </pre> |
| * |
| * 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. |
| * |
| * <pre> |
| * TestCase test = new MathTest("add") { |
| * public void runTest() { |
| * testAdd(); |
| * } |
| * }; |
| * test.run(); |
| * </pre> |
| * |
| * The dynamic way uses reflection to implement <code>runTest</code>. 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. |
| * |
| * <pre> |
| * TestCase = new MathTest("testAdd"); |
| * test.run(); |
| * </pre> |
| * |
| * The tests to be run can be collected into a TestSuite. JUnit provides |
| * different <i>test runners</i> which can run a test suite and collect the |
| * results. A test runner either expects a static method <code>suite</code> as |
| * the entry point to get a test to run or it will extract the suite |
| * automatically. |
| * |
| * <pre> |
| * public static Test suite() { |
| * suite.addTest(new MathTest("testAdd")); |
| * suite.addTest(new MathTest("testDivideByZero")); |
| * return suite; |
| * } |
| * </pre> |
| * |
| * @see TestResult |
| * @see TestSuite |
| */ |
| public class X03 { |
| |
| } |