Open Source Repository

Home /junit/junit-4.10 | Repository Home



org/junit/internal/runners/TestMethod.java
package org.junit.internal.runners;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.List;

import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.Test.None;
import org.junit.runners.BlockJUnit4ClassRunner;

/**
 @deprecated Included for backwards compatibility with JUnit 4.4. Will be
 *             removed in the next release. Please use
 *             {@link BlockJUnit4ClassRunner} in place of {@link JUnit4ClassRunner}.
 */
@Deprecated
public class TestMethod {
  private final Method fMethod;
  private TestClass fTestClass;

  public TestMethod(Method method, TestClass testClass) {
    fMethod= method;
    fTestClass= testClass;
  }

  public boolean isIgnored() {
    return fMethod.getAnnotation(Ignore.class!= null;
  }

  public long getTimeout() {
    Test annotation= fMethod.getAnnotation(Test.class);
    if (annotation == null)
      return 0;
    long timeout= annotation.timeout();
    return timeout;
  }

  protected Class<? extends Throwable> getExpectedException() {
    Test annotation= fMethod.getAnnotation(Test.class);
    if (annotation == null || annotation.expected() == None.class)
      return null;
    else
      return annotation.expected();
  }

  boolean isUnexpected(Throwable exception) {
    return ! getExpectedException().isAssignableFrom(exception.getClass());
  }

  boolean expectsException() {
    return getExpectedException() != null;
  }

  List<Method> getBefores() {
    return fTestClass.getAnnotatedMethods(Before.class);
  }

  List<Method> getAfters() {
    return fTestClass.getAnnotatedMethods(After.class);
  }

  public void invoke(Object testthrows IllegalArgumentException, IllegalAccessException, InvocationTargetException {
    fMethod.invoke(test);
  }

}