Package org.junit.tests

Source Code of org.junit.tests.ForwardCompatibilityTest$BeforeClassTest

package org.junit.tests;

import junit.framework.AssertionFailedError;
import junit.framework.JUnit4TestAdapter;
import junit.framework.TestCase;
import junit.framework.TestFailure;
import junit.framework.TestListener;
import junit.framework.TestResult;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.internal.runners.EmptyDescription;
import org.junit.runner.Description;
import org.junit.runner.RunWith;
import org.junit.runner.Runner;
import org.junit.runner.notification.RunNotifier;

public class ForwardCompatibilityTest extends TestCase {
  static String fLog;
 
  static public class NewTest {
    @Before public void before() {
      fLog+= "before ";
    }
    @After public void after() {
      fLog+= "after ";
    }
    @Test public void test() {
      fLog+= "test ";
    }
  }
 
  public void testCompatibility() {
    fLog= "";
    TestResult result= new TestResult();
    junit.framework.Test adapter= new JUnit4TestAdapter(NewTest.class);
    adapter.run(result);
    assertEquals("before test after ", fLog);
  }
 
  public void testToString() {
    JUnit4TestAdapter adapter= new JUnit4TestAdapter(NewTest.class);
    junit.framework.Test test= adapter.getTests().get(0);
    assertEquals(String.format("test(%s)", NewTest.class.getName()), test.toString());
  }

  public void testUseGlobalCache() {
    JUnit4TestAdapter adapter1= new JUnit4TestAdapter(NewTest.class);
    JUnit4TestAdapter adapter2= new JUnit4TestAdapter(NewTest.class);
    assertSame(adapter1.getTests().get(0), adapter2.getTests().get(0));
  }
 
  static Exception exception= new Exception();
 
  public static class ErrorTest {
    @Test public void error() throws Exception {
      throw exception;
    }
  }
  public void testException() {
    TestResult result= new TestResult();
    junit.framework.Test adapter= new JUnit4TestAdapter(ErrorTest.class);
    adapter.run(result);
    assertEquals(exception, result.errors().nextElement().thrownException());
  }
 
  public void testNotifyResult() {
    JUnit4TestAdapter adapter= new JUnit4TestAdapter(ErrorTest.class);
    TestResult result= new TestResult();
    final StringBuffer log= new StringBuffer();
    result.addListener(new TestListener() {
   
      public void startTest(junit.framework.Test test) {
        log.append(" start " + test);
      }
   
      public void endTest(junit.framework.Test test) {
        log.append(" end " + test);
      }
   
      public void addFailure(junit.framework.Test test, AssertionFailedError t) {
        log.append(" failure " + test);   
      }
   
      public void addError(junit.framework.Test test, Throwable t) {
        log.append(" error " + test);   
      }
    });
    adapter.run(result);
    String testName= String.format("error(%s)", ErrorTest.class.getName());
    assertEquals(String.format(" start %s error %s end %s", testName, testName, testName), log.toString());
  }

 
  public static class NoExceptionTest {
    @Test(expected=Exception.class) public void succeed() throws Exception {
    }
  }
  public void testNoException() {
    TestResult result= new TestResult();
    junit.framework.Test adapter= new JUnit4TestAdapter(NoExceptionTest.class);
    adapter.run(result);
    assertFalse(result.wasSuccessful());
  }
 
  public static class ExpectedTest {
    @Test(expected= Exception.class) public void expected() throws Exception {
      throw new Exception();
    }
  }
  public void testExpected() {
    TestResult result= new TestResult();
    junit.framework.Test adapter= new JUnit4TestAdapter(ExpectedTest.class);
    adapter.run(result);
    assertTrue(result.wasSuccessful());
  }
 
  public static class UnExpectedExceptionTest {
    @Test(expected= Exception.class) public void expected() throws Exception {
      throw new Error();
    }
  }
 
  static String log;
  public static class BeforeClassTest {
    @BeforeClass public static void beforeClass() {
      log+= "before class ";
    }
    @Before public void before() {
      log+= "before ";
    }
    @Test public void one() {
      log+= "test ";
    }
    @Test public void two()  {
      log+= "test ";
    }
    @After public void after() {
      log+= "after ";
    }
    @AfterClass public static void afterClass() {
      log+= "after class ";
    }
  }
 
  public void testBeforeAndAfterClass() {
    log= "";
    TestResult result= new TestResult();
    junit.framework.Test adapter= new JUnit4TestAdapter(BeforeClassTest.class);
    adapter.run(result);
    assertEquals("before class before test after before test after after class ", log);
  }
 
  public static class ExceptionInBeforeTest {
    @Before public void error() {
      throw new Error();
    }
    @Test public void nothing() {
    }
  }
 
  public void testExceptionInBefore() {
    TestResult result= new TestResult();
    junit.framework.Test adapter= new JUnit4TestAdapter(ExceptionInBeforeTest.class);
    adapter.run(result);
    assertEquals(1, result.errorCount());
  }
 
  public static class InvalidMethodTest {
    @BeforeClass public void shouldBeStatic() {}
  }
 
  public void testInvalidMethod() {
    TestResult result= new TestResult();
    junit.framework.Test adapter= new JUnit4TestAdapter(InvalidMethodTest.class);
    adapter.run(result);
    assertEquals(1, result.errorCount())
    TestFailure failure= result.errors().nextElement();
    assertTrue(failure.exceptionMessage().contains("Method shouldBeStatic() should be static"));
  }
 
  private static boolean wasRun= false;
 
  public static class MarkerRunner extends Runner {
    public MarkerRunner(Class<?> klass) {
    }

    @Override
    public void run(RunNotifier notifier) {
      wasRun= true;
    }

    @Override
    public int testCount() {
      return 0;
    }

    @Override
    public Description getDescription() {
      return new EmptyDescription();
    }
  }

  @RunWith(MarkerRunner.class)
  public static class NoTests {
  }
 
  public void testRunWithClass() {
    wasRun= false;
    TestResult result= new TestResult();
    junit.framework.Test adapter= new JUnit4TestAdapter(NoTests.class);
    adapter.run(result);
    assertTrue(wasRun);
  }
 
  public void testToStringSuite() {
    junit.framework.Test adapter= new JUnit4TestAdapter(NoTests.class);
    assertEquals(NoTests.class.getName(), adapter.toString());
  }
}
TOP

Related Classes of org.junit.tests.ForwardCompatibilityTest$BeforeClassTest

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.