Package org.testng.internal
Class MethodInheritance
- java.lang.Object
-
- org.testng.internal.MethodInheritance
-
public class MethodInheritance extends java.lang.Object
-
-
Field Summary
Fields Modifier and Type Field Description private static java.util.Comparator<ITestNGMethod>
COMPARATOR
A Custom comparator that helps inITestNGMethod
ordering keeping in mind the class hierarchy.
-
Constructor Summary
Constructors Constructor Description MethodInheritance()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static boolean
dependencyExists(ITestNGMethod m1, ITestNGMethod m2, ITestNGMethod[] methods)
private static boolean
equalsEffectiveClass(ITestNGMethod m1, ITestNGMethod m2)
private static java.util.List<ITestNGMethod>
findMethodListSuperClass(java.util.Map<java.lang.Class<?>,java.util.List<ITestNGMethod>> map, java.lang.Class<? extends ITestNGMethod> methodClass)
Look in map for a class that is a superclass of methodClassprivate static java.lang.Class<?>
findSubClass(java.util.Map<java.lang.Class<?>,java.util.List<ITestNGMethod>> map, java.lang.Class<? extends ITestNGMethod> methodClass)
Look in map for a class that is a subclass of methodClassstatic void
fixMethodInheritance(ITestNGMethod[] methods, boolean before)
Fix the methodsDependedUpon to make sure that @Configuration methods respect inheritance (before methods are invoked in the order Base first and after methods are invoked in the order Child first)private static boolean
hasUpstreamHierarchy(ITestNGMethod m1, ITestNGMethod m2)
private static boolean
internalDependencyExists(ITestNGMethod m1, ITestNGMethod m2, ITestNGMethod[] methods)
private static void
sortMethodsByInheritance(java.util.List<ITestNGMethod> methods, boolean baseClassToChild)
Given a list of methods belonging to the same class hierarchy, orders them from the base class to the child (if true) or from child to base class (if false)
-
-
-
Field Detail
-
COMPARATOR
private static final java.util.Comparator<ITestNGMethod> COMPARATOR
A Custom comparator that helps inITestNGMethod
ordering keeping in mind the class hierarchy. Here's how the comparator works:
Lets say we have two method objects o1 and o2.
o1 is associated with MyClass and o2 is associated with AnotherClass.- -1 is returned if MyClass is the parent of AnotherClass
- 1 is returned if AnotherClass is the parent of MyClass
- 0 is returned otherwise if MyClass and AnotherClass are the same i.e., both methods belong to the same class.
Lets say we have :
- interface Oven
- Microwave implements Oven
- microwave instanceof Oven : returns true
- Oven.class.isAssignableFrom(microwave.getClass()) : returns true
-
-
Method Detail
-
findMethodListSuperClass
private static java.util.List<ITestNGMethod> findMethodListSuperClass(java.util.Map<java.lang.Class<?>,java.util.List<ITestNGMethod>> map, java.lang.Class<? extends ITestNGMethod> methodClass)
Look in map for a class that is a superclass of methodClass
-
findSubClass
private static java.lang.Class<?> findSubClass(java.util.Map<java.lang.Class<?>,java.util.List<ITestNGMethod>> map, java.lang.Class<? extends ITestNGMethod> methodClass)
Look in map for a class that is a subclass of methodClass
-
fixMethodInheritance
public static void fixMethodInheritance(ITestNGMethod[] methods, boolean before)
Fix the methodsDependedUpon to make sure that @Configuration methods respect inheritance (before methods are invoked in the order Base first and after methods are invoked in the order Child first)- Parameters:
methods
- the list of methodsbefore
- true if we are handling a before method (meaning, the methods need to be sorted base class first and subclass last). false otherwise (subclass methods first, base classes last).
-
hasUpstreamHierarchy
private static boolean hasUpstreamHierarchy(ITestNGMethod m1, ITestNGMethod m2)
-
dependencyExists
private static boolean dependencyExists(ITestNGMethod m1, ITestNGMethod m2, ITestNGMethod[] methods)
-
internalDependencyExists
private static boolean internalDependencyExists(ITestNGMethod m1, ITestNGMethod m2, ITestNGMethod[] methods)
-
equalsEffectiveClass
private static boolean equalsEffectiveClass(ITestNGMethod m1, ITestNGMethod m2)
-
sortMethodsByInheritance
private static void sortMethodsByInheritance(java.util.List<ITestNGMethod> methods, boolean baseClassToChild)
Given a list of methods belonging to the same class hierarchy, orders them from the base class to the child (if true) or from child to base class (if false)
-
-