LoadingTestCollector.java :  » android-core » platform-dalvik » junit » runner » Android Open Source

Android Open Source » android core » platform dalvik 
platform dalvik » junit » runner » LoadingTestCollector.java
package junit.runner;

import java.lang.reflect.*;
import junit.runner.*;
import junit.framework.*;

/**
 * An implementation of a TestCollector that loads
 * all classes on the class path and tests whether
 * it is assignable from Test or provides a static suite method.
 * @see TestCollector
 */
public class LoadingTestCollector extends ClassPathTestCollector {
  
  TestCaseClassLoader fLoader;
  
  public LoadingTestCollector() {
    fLoader= new TestCaseClassLoader();
  }
  
  protected boolean isTestClass(String classFileName) {  
    try {
      if (classFileName.endsWith(".class")) {
        Class testClass= classFromFile(classFileName);
        return (testClass != null) && isTestClass(testClass);
      }
    } 
    catch (ClassNotFoundException expected) {
    }
    catch (NoClassDefFoundError notFatal) {
    } 
    return false;
  }
  
  Class classFromFile(String classFileName) throws ClassNotFoundException {
    String className= classNameFromFile(classFileName);
    if (!fLoader.isExcluded(className))
      return fLoader.loadClass(className, false);
    return null;
  }
  
  boolean isTestClass(Class testClass) {
    if (hasSuiteMethod(testClass))
      return true;
    if (Test.class.isAssignableFrom(testClass) &&
      Modifier.isPublic(testClass.getModifiers()) &&
      hasPublicConstructor(testClass)) 
      return true;
    return false;
  }
  
  boolean hasSuiteMethod(Class testClass) {
    try {
      testClass.getMethod(BaseTestRunner.SUITE_METHODNAME, new Class[0]);
     } catch(Exception e) {
       return false;
    }
    return true;
  }
  
  boolean hasPublicConstructor(Class testClass) {
    try {
      TestSuite.getTestConstructor(testClass);
    } catch(NoSuchMethodException e) {
      return false;
    }
    return true;
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.