/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockito.internal.runners.util; import org.mockito.internal.runners.InternalRunner; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; public class RunnerProvider { public InternalRunner newInstance(String runnerClassName, Object ... constructorArgs) throws Exception { Constructor constructor; try { Class runnerClass = Class.forName(runnerClassName); if (runnerClass.getConstructors().length != 1) { throw new IllegalArgumentException("Expected " + runnerClassName + " to have exactly one constructor."); } constructor = runnerClass.getConstructors()[0]; } catch (Exception e) { throw new RuntimeException(e); } try { return (InternalRunner) constructor.newInstance(constructorArgs); } catch (InvocationTargetException e) { throw e; } catch (Exception e) { throw new RuntimeException(e); } } }