1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.surefire.junitplatform;
20
21 import java.lang.reflect.Method;
22 import java.util.Collections;
23 import java.util.Comparator;
24 import java.util.Optional;
25
26 import org.junit.jupiter.api.ClassDescriptor;
27 import org.junit.jupiter.api.ClassOrderer;
28 import org.junit.jupiter.api.ClassOrdererContext;
29 import org.junit.jupiter.api.MethodDescriptor;
30 import org.junit.jupiter.api.MethodOrderer;
31 import org.junit.jupiter.api.MethodOrdererContext;
32 import org.junit.jupiter.api.parallel.ExecutionMode;
33 import org.junit.platform.commons.util.ClassUtils;
34
35 public class ReverseOrdering {
36
37 public static class ReverseMethodOrder implements MethodOrderer {
38
39 private static final Comparator<MethodDescriptor> COMPARATOR =
40 Comparator.comparing((descriptor) -> descriptor.getMethod().getName());
41
42 @Override
43 public void orderMethods(MethodOrdererContext context) {
44 context.getMethodDescriptors().sort(COMPARATOR);
45 Collections.reverse(context.getMethodDescriptors());
46 }
47
48 private static String parameterList(Method method) {
49 return ClassUtils.nullSafeToString(method.getParameterTypes());
50 }
51
52 @Override
53 public Optional<ExecutionMode> getDefaultExecutionMode() {
54 return MethodOrderer.super.getDefaultExecutionMode();
55 }
56 }
57
58 public static class ReverseClassOrder implements ClassOrderer {
59
60 private static final Comparator<ClassDescriptor> COMPARATOR =
61 Comparator.comparing((descriptor) -> descriptor.getTestClass().getName());
62
63 @Override
64 public void orderClasses(ClassOrdererContext context) {
65 context.getClassDescriptors().sort(COMPARATOR);
66 Collections.reverse(context.getClassDescriptors());
67 }
68 }
69 }