package org.test4j.testng.utility;
import java.util.ArrayList;
import java.util.List;
import mockit.Invocation;
import mockit.Mock;
import mockit.MockUp;
import org.testng.ITestNGMethod;
import org.testng.internal.TestNGMethodFinder;
@SuppressWarnings("rawtypes")
public final class MockTestNGMethodFinder extends MockUp<TestNGMethodFinder> {
private static final String Test4J_Before_Method = "aBeforeMethod";
private static final String Test4J_After_Method = "zAfterMethod";
private static final String Test4J_Before_Class = "aBeforeClass";
private static final String Test4J_After_Class = "zAfterClass";
// public TestNGMethodFinder it;
@Mock
public ITestNGMethod[] getBeforeClassMethods(Invocation invocation, Class cls) {
ITestNGMethod[] methods = invocation.proceed(cls);
//ITestNGMethod[] methods = it.getBeforeClassMethods(cls);
List<ITestNGMethod> list = new ArrayList<ITestNGMethod>();
ITestNGMethod aBeforeClass = null;
for (ITestNGMethod method : methods) {
String name = method.getMethodName();
if (Test4J_Before_Class.equals(name)) {
aBeforeClass = method;
} else {
list.add(method);
}
}
if (aBeforeClass != null) {
list.add(0, aBeforeClass);
}
return list.toArray(new ITestNGMethod[0]);
}
@Mock
public ITestNGMethod[] getAfterClassMethods(Invocation invocation, Class cls) {
ITestNGMethod[] methods = invocation.proceed(cls);
//ITestNGMethod[] methods = it.getAfterClassMethods(cls);
List<ITestNGMethod> list = new ArrayList<ITestNGMethod>();
ITestNGMethod zAfterClass = null;
for (ITestNGMethod method : methods) {
String name = method.getMethodName();
if (Test4J_After_Class.equals(name)) {
zAfterClass = method;
} else {
list.add(method);
}
}
if (zAfterClass != null) {
list.add(zAfterClass);
}
return list.toArray(new ITestNGMethod[0]);
}
@Mock
public ITestNGMethod[] getBeforeTestMethods(Invocation invocation, Class cls) {
ITestNGMethod[] methods = invocation.proceed(cls);
//ITestNGMethod[] methods = it.getBeforeTestMethods(cls);
List<ITestNGMethod> list = new ArrayList<ITestNGMethod>();
ITestNGMethod aBeforeMethod = null;
for (ITestNGMethod method : methods) {
String name = method.getMethodName();
if (Test4J_Before_Method.equals(name)) {
aBeforeMethod = method;
} else {
list.add(method);
}
}
if (aBeforeMethod != null) {
list.add(0, aBeforeMethod);
}
return list.toArray(new ITestNGMethod[0]);
}
@Mock
public ITestNGMethod[] getAfterTestMethods(Invocation invocation, Class cls) {
ITestNGMethod[] methods = invocation.proceed(cls);
//ITestNGMethod[] methods = it.getAfterTestMethods(cls);
List<ITestNGMethod> list = new ArrayList<ITestNGMethod>();
ITestNGMethod zAfterMethod = null;
for (ITestNGMethod method : methods) {
String name = method.getMethodName();
if (Test4J_After_Method.equals(name)) {
zAfterMethod = method;
} else {
list.add(method);
}
}
if (zAfterMethod != null) {
list.add(zAfterMethod);
}
return list.toArray(new ITestNGMethod[0]);
}
}