# HG changeset patch # User Jaroslav Tulach # Date 1371820869 -7200 # Node ID be346bd5a46db4eae4fa0ed8d83ab289c0e2e453 # Parent ccf2447021f6d9b92645fb8b5581fcae790b7b3d Ability to execute test methods annotated by other annotations than @BrwsrTest diff -r ccf2447021f6 -r be346bd5a46d rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/VMTest.java --- a/rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/VMTest.java Thu Jun 20 10:22:50 2013 +0200 +++ b/rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/VMTest.java Fri Jun 21 15:21:09 2013 +0200 @@ -17,6 +17,7 @@ */ package org.apidesign.bck2brwsr.vmtest; +import java.lang.annotation.Annotation; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -39,6 +40,7 @@ public final class VMTest { private final List classes = new ArrayList<>(); private final List launcher = new ArrayList<>(); + private Class annotation = BrwsrTest.class; private VMTest() { } @@ -104,6 +106,24 @@ this.launcher.addAll(Arrays.asList(launcher)); return this; } + + /** Specifies which annotation annotates the test methods + * to be executed. By + * default it is the {@link BrwsrTest} annotation. Methods in + * {@link #withClasses(java.lang.Class[]) test classes} annotated by + * this annotation will be executed. + * + * @param aClass an annotation class + * @return this + * @since 0.8 + */ + public final VMTest withTestAnnotation(Class aClass) { + if (!aClass.isAnnotation()) { + throw new IllegalStateException(); + } + this.annotation = aClass; + return this; + } /** Assembles the provided information into the final array of tests. * @return array of TestNG tests @@ -112,7 +132,8 @@ public final Object[] build() { return CompareCase.create( launcher.toArray(new String[0]), - classes.toArray(new Class[0]) + classes.toArray(new Class[0]), + annotation ); } } diff -r ccf2447021f6 -r be346bd5a46d rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/impl/CompareCase.java --- a/rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/impl/CompareCase.java Thu Jun 20 10:22:50 2013 +0200 +++ b/rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/impl/CompareCase.java Fri Jun 21 15:21:09 2013 +0200 @@ -17,6 +17,7 @@ */ package org.apidesign.bck2brwsr.vmtest.impl; +import java.lang.annotation.Annotation; import org.apidesign.bck2brwsr.vmtest.*; import java.lang.reflect.Method; import java.util.ArrayList; @@ -53,7 +54,7 @@ * @param clazz the class to inspect * @return the set of created tests */ - public static Object[] create(String[] brwsr, Class[] classes) { + public static Object[] create(String[] brwsr, Class[] classes, Class brwsrTest) { List ret = new ArrayList<>(); final LaunchSetup l = LaunchSetup.INSTANCE; @@ -70,7 +71,7 @@ Method[] arr = clazz.getMethods(); for (Method m : arr) { registerCompareCases(m, l, ret, brwsr); - registerBrwsrCases(m, l, ret, brwsr); + registerBrwsrCases(brwsrTest, m, l, ret, brwsr); } } return ret.toArray(); @@ -149,8 +150,8 @@ ret.add(new CompareCase(m, real, cse)); } } - private static void registerBrwsrCases(Method m, final LaunchSetup l, List ret, String[] brwsr) { - BrwsrTest c = m.getAnnotation(BrwsrTest.class); + private static void registerBrwsrCases(Class brwsrTest, Method m, final LaunchSetup l, List ret, String[] brwsr) { + Object c = m.getAnnotation(brwsrTest); if (c == null) { return; }