org.mockito.internal.runners.util.RunnerProvider Maven / Gradle / Ivy
/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockito.internal.runners.util;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import org.mockito.internal.runners.RunnerImpl;
public class RunnerProvider {
private static boolean hasJUnit45OrHigher;
static {
try {
Class.forName("org.junit.runners.BlockJUnit4ClassRunner");
hasJUnit45OrHigher = true;
} catch (Throwable t) {
hasJUnit45OrHigher = false;
}
}
public boolean isJUnit45OrHigherAvailable() {
return hasJUnit45OrHigher;
}
public RunnerImpl newInstance(String runnerClassName, Class> constructorParam) throws Exception {
Constructor> constructor;
try {
Class> runnerClass = Class.forName(runnerClassName);
constructor = runnerClass.getConstructor(Class.class.getClass());
} catch (Exception e) {
throw new RuntimeException(e);
}
try {
return (RunnerImpl) constructor.newInstance(constructorParam);
} catch (InvocationTargetException e) {
throw e;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}