1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.surefire.testng.utils;
20
21 import java.util.List;
22
23 import org.apache.maven.surefire.api.testset.TestListResolver;
24 import org.testng.IMethodSelector;
25 import org.testng.IMethodSelectorContext;
26 import org.testng.ITestNGMethod;
27
28
29
30
31
32
33
34 public class MethodSelector implements IMethodSelector {
35 private static volatile TestListResolver testListResolver = null;
36
37 @Override
38 public void setTestMethods(List arg0) {}
39
40 @Override
41 public boolean includeMethod(IMethodSelectorContext context, ITestNGMethod testngMethod, boolean isTestMethod) {
42 return testngMethod.isBeforeClassConfiguration()
43 || testngMethod.isBeforeGroupsConfiguration()
44 || testngMethod.isBeforeMethodConfiguration()
45 || testngMethod.isBeforeSuiteConfiguration()
46 || testngMethod.isBeforeTestConfiguration()
47 || testngMethod.isAfterClassConfiguration()
48 || testngMethod.isAfterGroupsConfiguration()
49 || testngMethod.isAfterMethodConfiguration()
50 || testngMethod.isAfterSuiteConfiguration()
51 || testngMethod.isAfterTestConfiguration()
52 || shouldRun(testngMethod);
53 }
54
55 public static void setTestListResolver(TestListResolver testListResolver) {
56 MethodSelector.testListResolver = testListResolver;
57 }
58
59 private static boolean shouldRun(ITestNGMethod test) {
60 TestListResolver resolver = testListResolver;
61 boolean hasTestResolver = resolver != null && !resolver.isEmpty();
62 if (hasTestResolver) {
63 boolean run = false;
64 for (Class<?> clazz = test.getRealClass();
65 !run && clazz != null && clazz != Object.class;
66 clazz = clazz.getSuperclass()) {
67 run = resolver.shouldRun(clazz, test.getMethodName());
68 }
69 return run;
70 }
71 return false;
72 }
73 }