/******************************************************************************* * Copyright (c) 2012 BMW Car IT and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ package org.jnario.runner; import org.jnario.lib.AbstractSpecCreator; import org.junit.Ignore; import org.junit.runner.Description; import org.junit.runner.manipulation.NoTestsRemainException; import org.junit.runner.notification.RunNotifier; import org.junit.runners.model.FrameworkMethod; import org.junit.runners.model.InitializationError; import org.junit.runners.model.Statement; public class StepRunner extends ExampleRunner { private static final class NullSpecCreator extends AbstractSpecCreator { @Override protected <T> T create(Class<T> klass) { throw new UnsupportedOperationException(); } } private Object scenario; public StepRunner(Class<?> testClass, FrameworkMethod method, NameProvider nameProvider, Object scenario) throws InitializationError, NoTestsRemainException { super(testClass, method, nameProvider, new NullSpecCreator()); this.scenario = scenario; } @Override protected void runChild(FrameworkMethod method, RunNotifier notifier) { Description description= describeChild(method); if (method.getAnnotation(Ignore.class) != null) { notifier.fireTestIgnored(description); } else { runLeaf(methodBlock(method), description, notifier); } } @Override protected Statement methodBlock(FrameworkMethod method) { return methodInvoker(method, scenario); } }