Top Fields Constructors Methods
org.testng.internal

public Class MethodInheritance

extends Object
Class Inheritance
Imports
java.util.Arrays, .Collections, .Comparator, .List, .Map, .Map.Entry, .Objects, org.testng.ITestNGMethod, org.testng.collections.Lists, .Maps

Field Summary

Modifier and TypeField and Description
private static final Comparator<ITestNGMethod>
COMPARATOR

A Custom comparator that helps in ITestNGMethod ordering keeping in mind the class hierarchy.

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
private static boolean
private static boolean
private static List<ITestNGMethod>
findMethodListSuperClass(Map<Class<?>, List<ITestNGMethod>> map, Class<? extends ITestNGMethod> methodClass)

Look in map for a class that is a superclass of methodClass

private static Class<?>
findSubClass(Map<Class<?>, List<ITestNGMethod>> map, Class<? extends ITestNGMethod> methodClass)

Look in map for a class that is a subclass of methodClass

public static void
fixMethodInheritance(ITestNGMethod[]
the list of methods
methods
,
boolean
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).
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
private static boolean
private static void
sortMethodsByInheritance(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)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

COMPARATORback to summary
private static final Comparator<ITestNGMethod> COMPARATOR

A Custom comparator that helps in ITestNGMethod 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.
Working of isAssignableFrom
Lets say we have :
  1. interface Oven
  2. Microwave implements Oven
  1. microwave instanceof Oven : returns true
  2. Oven.class.isAssignableFrom(microwave.getClass()) : returns true

Constructor Detail

MethodInheritanceback to summary
public MethodInheritance()

Method Detail

dependencyExistsback to summary
private static boolean dependencyExists(ITestNGMethod m1, ITestNGMethod m2, ITestNGMethod[] methods)
equalsEffectiveClassback to summary
private static boolean equalsEffectiveClass(ITestNGMethod m1, ITestNGMethod m2)
findMethodListSuperClassback to summary
private static List<ITestNGMethod> findMethodListSuperClass(Map<Class<?>, List<ITestNGMethod>> map, Class<? extends ITestNGMethod> methodClass)

Look in map for a class that is a superclass of methodClass

findSubClassback to summary
private static Class<?> findSubClass(Map<Class<?>, List<ITestNGMethod>> map, Class<? extends ITestNGMethod> methodClass)

Look in map for a class that is a subclass of methodClass

fixMethodInheritanceback to summary
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:ITestNGMethod[]

the list of methods

before:boolean

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).

hasUpstreamHierarchyback to summary
private static boolean hasUpstreamHierarchy(ITestNGMethod m1, ITestNGMethod m2)
internalDependencyExistsback to summary
private static boolean internalDependencyExists(ITestNGMethod m1, ITestNGMethod m2, ITestNGMethod[] methods)
sortMethodsByInheritanceback to summary
private static void sortMethodsByInheritance(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)