From: David S. <ds...@us...> - 2006-12-13 02:10:57
|
Update of /cvsroot/junit/junit/src/org/junit/internal/requests In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv27005/src/org/junit/internal/requests Modified Files: ClassRequest.java Log Message: JUnitCore can run a class with a suite() method. Index: ClassRequest.java =================================================================== RCS file: /cvsroot/junit/junit/src/org/junit/internal/requests/ClassRequest.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- ClassRequest.java 21 Nov 2006 18:53:34 -0000 1.1 +++ ClassRequest.java 13 Dec 2006 02:10:51 -0000 1.2 @@ -7,12 +7,19 @@ import org.junit.runner.Request; import org.junit.runner.RunWith; import org.junit.runner.Runner; +import org.junit.runners.AllTests; public class ClassRequest extends Request { private final Class<?> fTestClass; + private boolean fCanUseSuiteMethod; - public ClassRequest(Class<?> each) { - fTestClass= each; + public ClassRequest(Class<?> testClass, boolean canUseSuiteMethod) { + fTestClass= testClass; + fCanUseSuiteMethod= canUseSuiteMethod; + } + + public ClassRequest(Class<?> testClass) { + this(testClass, true); } @Override @@ -32,6 +39,8 @@ RunWith annotation= testClass.getAnnotation(RunWith.class); if (annotation != null) { return annotation.value(); + } else if (hasSuiteMethod() && fCanUseSuiteMethod) { + return AllTests.class; } else if (isPre4Test(testClass)) { return OldTestClassRunner.class; } else { @@ -39,6 +48,19 @@ } } + private boolean hasSuiteMethod() { + // TODO: check all attributes + try { + fTestClass.getMethod("suite"); + } catch (SecurityException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (NoSuchMethodException e) { + return false; + } + return true; + } + boolean isPre4Test(Class<?> testClass) { return junit.framework.TestCase.class.isAssignableFrom(testClass); } |