Package junit.tests.framework

Source Code of junit.tests.framework.TestCaseTest$TornDown

package junit.tests.framework;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestFailure;
import junit.framework.TestResult;
import junit.framework.TestSuite;
import junit.tests.WasRun;

/**
* A test case testing the testing framework.
*
*/
public class TestCaseTest extends TestCase {
 
  static class TornDown extends TestCase {
    boolean fTornDown= false;
   
    @Override
    protected void tearDown() {
      fTornDown= true;
    }
    @Override
    protected void runTest() {
      throw new Error("running");
    }
  }

  public void testCaseToString() {
    // This test wins the award for twisted snake tail eating while
    // writing self tests. And you thought those weird anonymous
    // inner classes were bad...
    assertEquals("testCaseToString(junit.tests.framework.TestCaseTest)", toString());
  }
  public void testError() {
    TestCase error= new TestCase("error") {
      @Override
      protected void runTest() {
        throw new Error();
      }
    };
    verifyError(error);
  }
  public void testRunAndTearDownFails() {
    TornDown fails= new TornDown() {
      @Override
      protected void tearDown() {
        super.tearDown();
        throw new Error();
      }
      @Override
      protected void runTest() {
        throw new Error();
      }
    };
    verifyError(fails);
    assertTrue(fails.fTornDown);
  }
  public void testSetupFails() {
    TestCase fails= new TestCase("success") {
      @Override
      protected void setUp() {
        throw new Error();
      }
      @Override
      protected void runTest() {
      }
    };
    verifyError(fails);
  }
  public void testSuccess() {
    TestCase success= new TestCase("success") {
      @Override
      protected void runTest() {
      }
    };
    verifySuccess(success);
  }
  public void testFailure() {
    TestCase failure= new TestCase("failure") {
      @Override
      protected void runTest() {
        fail();
      }
    };
    verifyFailure(failure);
  }

  public void testTearDownAfterError() {
    TornDown fails= new TornDown();
    verifyError(fails);
    assertTrue(fails.fTornDown);
  }
 
  public void testTearDownFails() {
    TestCase fails= new TestCase("success") {
      @Override
      protected void tearDown() {
        throw new Error();
      }
      @Override
      protected void runTest() {
      }
    };
    verifyError(fails);
  }
  public void testTearDownSetupFails() {
    TornDown fails= new TornDown() {
      @Override
      protected void setUp() {
        throw new Error();
      }
    };
    verifyError(fails);
    assertTrue(!fails.fTornDown);
  }
  public void testWasRun() {
    WasRun test= new WasRun();
    test.run();
    assertTrue(test.fWasRun);
  }
  public void testExceptionRunningAndTearDown() {
    // With 1.4, we should
    // wrap the exception thrown while running with the exception thrown
    // while tearing down
    Test t= new TornDown() {
      @Override
      public void tearDown() {
        throw new Error("tearingDown");
      }
    };
    TestResult result= new TestResult();
    t.run(result);
    TestFailure failure= result.errors().nextElement();
    assertEquals("running", failure.thrownException().getMessage());
  }
 
  public void testErrorTearingDownDoesntMaskErrorRunning() {
    final Exception running= new Exception("Running");
    TestCase t= new TestCase() {
      @Override
      protected void runTest() throws Throwable {
        throw running;
      }
      @Override
      protected void tearDown() throws Exception {
        throw new Error("Tearing down");
      }
    };
    try {
      t.runBare();
    } catch (Throwable thrown) {
      assertSame(running, thrown);
    }
  }
 
  public void testNoArgTestCasePasses() {
    Test t= new TestSuite(NoArgTestCaseTest.class);
    TestResult result= new TestResult();
    t.run(result);
    assertTrue(result.runCount() == 1);
    assertTrue(result.failureCount() == 0);
    assertTrue(result.errorCount() == 0);
  }
 
  public void testNamelessTestCase() {
    TestCase t= new TestCase() {};
    TestResult result = t.run();
    assertEquals(1, result.failureCount());
  }
 
  void verifyError(TestCase test) {
    TestResult result= test.run();
    assertTrue(result.runCount() == 1);
    assertTrue(result.failureCount() == 0);
    assertTrue(result.errorCount() == 1);
  }
  void verifyFailure(TestCase test) {
    TestResult result= test.run();
    assertTrue(result.runCount() == 1);
    assertTrue(result.failureCount() == 1);
    assertTrue(result.errorCount() == 0);
  }
  void verifySuccess(TestCase test) {
    TestResult result= test.run();
    assertTrue(result.runCount() == 1);
    assertTrue(result.failureCount() == 0);
    assertTrue(result.errorCount() == 0);
  }
}
TOP

Related Classes of junit.tests.framework.TestCaseTest$TornDown

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.