package com.squareup.burst; import java.lang.reflect.Method; import org.junit.internal.runners.model.ReflectiveCallable; import org.junit.runners.model.FrameworkMethod; import static com.squareup.burst.BurstJUnit4.nameWithArguments; import static com.squareup.burst.Util.checkNotNull; final class BurstMethod extends FrameworkMethod { private final Enum<?>[] methodArgs; BurstMethod(Method method, Enum<?>[] methodArgs) { super(checkNotNull(method, "method")); this.methodArgs = checkNotNull(methodArgs, "methodArgs"); } @Override public Object invokeExplosively(final Object target, Object... params) throws Throwable { checkNotNull(target, "target"); ReflectiveCallable callable = new ReflectiveCallable() { @Override protected Object runReflectiveCall() throws Throwable { return getMethod().invoke(target, methodArgs); } }; return callable.run(); } @Override public String getName() { return nameWithArguments(super.getName(), methodArgs); } }