Ability to execute test methods annotated by other annotations than @BrwsrTest classloader
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Fri, 21 Jun 2013 15:21:09 +0200
branchclassloader
changeset 1185be346bd5a46d
parent 1184 ccf2447021f6
child 1186 265edcee24ed
Ability to execute test methods annotated by other annotations than @BrwsrTest
rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/VMTest.java
rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/impl/CompareCase.java
     1.1 --- a/rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/VMTest.java	Thu Jun 20 10:22:50 2013 +0200
     1.2 +++ b/rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/VMTest.java	Fri Jun 21 15:21:09 2013 +0200
     1.3 @@ -17,6 +17,7 @@
     1.4   */
     1.5  package org.apidesign.bck2brwsr.vmtest;
     1.6  
     1.7 +import java.lang.annotation.Annotation;
     1.8  import java.util.ArrayList;
     1.9  import java.util.Arrays;
    1.10  import java.util.List;
    1.11 @@ -39,6 +40,7 @@
    1.12  public final class VMTest {
    1.13      private final List<Class> classes = new ArrayList<>();
    1.14      private final List<String> launcher = new ArrayList<>();
    1.15 +    private Class<? extends Annotation> annotation = BrwsrTest.class;
    1.16      
    1.17      private VMTest() {
    1.18      }
    1.19 @@ -104,6 +106,24 @@
    1.20          this.launcher.addAll(Arrays.asList(launcher));
    1.21          return this;
    1.22      }
    1.23 +
    1.24 +    /** Specifies which annotation annotates the test methods
    1.25 +     * to be executed. By 
    1.26 +     * default it is the {@link BrwsrTest} annotation. Methods in
    1.27 +     * {@link #withClasses(java.lang.Class[]) test classes} annotated by
    1.28 +     * this annotation will be executed.
    1.29 +     * 
    1.30 +     * @param aClass an annotation class 
    1.31 +     * @return this
    1.32 +     * @since 0.8
    1.33 +     */
    1.34 +    public final VMTest withTestAnnotation(Class<? extends Annotation> aClass) {
    1.35 +        if (!aClass.isAnnotation()) {
    1.36 +            throw new IllegalStateException();
    1.37 +        }
    1.38 +        this.annotation = aClass;
    1.39 +        return this;
    1.40 +    }
    1.41      
    1.42      /** Assembles the provided information into the final array of tests.
    1.43       * @return array of TestNG tests
    1.44 @@ -112,7 +132,8 @@
    1.45      public final Object[] build() {
    1.46          return CompareCase.create(
    1.47              launcher.toArray(new String[0]), 
    1.48 -            classes.toArray(new Class[0])
    1.49 +            classes.toArray(new Class[0]),
    1.50 +            annotation
    1.51          );
    1.52      }
    1.53  }
     2.1 --- a/rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/impl/CompareCase.java	Thu Jun 20 10:22:50 2013 +0200
     2.2 +++ b/rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/impl/CompareCase.java	Fri Jun 21 15:21:09 2013 +0200
     2.3 @@ -17,6 +17,7 @@
     2.4   */
     2.5  package org.apidesign.bck2brwsr.vmtest.impl;
     2.6  
     2.7 +import java.lang.annotation.Annotation;
     2.8  import org.apidesign.bck2brwsr.vmtest.*;
     2.9  import java.lang.reflect.Method;
    2.10  import java.util.ArrayList;
    2.11 @@ -53,7 +54,7 @@
    2.12       * @param clazz the class to inspect
    2.13       * @return the set of created tests
    2.14       */
    2.15 -    public static Object[] create(String[] brwsr, Class[] classes) {
    2.16 +    public static Object[] create(String[] brwsr, Class[] classes, Class<? extends Annotation> brwsrTest) {
    2.17          List<Object> ret = new ArrayList<>();
    2.18          
    2.19          final LaunchSetup l = LaunchSetup.INSTANCE;
    2.20 @@ -70,7 +71,7 @@
    2.21              Method[] arr = clazz.getMethods();
    2.22              for (Method m : arr) {
    2.23                  registerCompareCases(m, l, ret, brwsr);
    2.24 -                registerBrwsrCases(m, l, ret, brwsr);
    2.25 +                registerBrwsrCases(brwsrTest, m, l, ret, brwsr);
    2.26              }
    2.27          }
    2.28          return ret.toArray();
    2.29 @@ -149,8 +150,8 @@
    2.30              ret.add(new CompareCase(m, real, cse));
    2.31          }
    2.32      }
    2.33 -    private static void registerBrwsrCases(Method m, final LaunchSetup l, List<Object> ret, String[] brwsr) {
    2.34 -        BrwsrTest c = m.getAnnotation(BrwsrTest.class);
    2.35 +    private static void registerBrwsrCases(Class<? extends Annotation> brwsrTest, Method m, final LaunchSetup l, List<Object> ret, String[] brwsr) {
    2.36 +        Object c = m.getAnnotation(brwsrTest);
    2.37          if (c == null) {
    2.38              return;
    2.39          }