package org.primefaces.test.bdd; import com.google.common.util.concurrent.MoreExecutors; import org.jbehave.core.configuration.Configuration; import org.jbehave.core.configuration.MostUsefulConfiguration; import org.jbehave.core.io.UnderscoredCamelCaseResolver; import org.jbehave.core.junit.JUnitStory; import org.jbehave.core.reporters.StoryReporterBuilder; import org.jbehave.core.steps.InjectableStepsFactory; import org.jbehave.core.steps.ParameterControls; import org.jboss.arquillian.jbehave.core.ArquillianInstanceStepsFactory; import static org.jbehave.core.reporters.Format.*; /** * Created with IntelliJ IDEA. * User: rmpestano * Date: 10/31/13 * Time: 8:13 PM * To change this template use File | Settings | File Templates. * * Classe base dos testes BDD com arquillian */ public abstract class BaseBdd extends JUnitStory{ private Object[] steps; public BaseBdd() { configuredEmbedder().useExecutorService(MoreExecutors.sameThreadExecutor()); } @Override public Configuration configuration() { Configuration configuration = new MostUsefulConfiguration() .useStoryPathResolver(new UnderscoredCamelCaseResolver()) .useParameterControls(new ParameterControls().useDelimiterNamedParameters(true)) .useStoryReporterBuilder(new StoryReporterBuilder() .withDefaultFormats() .withFormats(CONSOLE, TXT, HTML, XML) .withFailureTrace(true)); return configuration; } @Override public InjectableStepsFactory stepsFactory() { return new ArquillianInstanceStepsFactory(configuration(), getSteps()); } private Object[] getSteps(){ if(getClass().isAnnotationPresent(Steps.class)){ if(steps == null){ steps = initializeSteps(); } return steps; } else{ throw new RuntimeException("provide steps annotation to run jbehave tests"); } } private Object[] initializeSteps() { Class[] stepsCandidates = getClass().getAnnotation(Steps.class).value(); steps = new Object[stepsCandidates.length]; for (int i = 0;i< stepsCandidates.length;i++) { try { steps[i] = stepsCandidates[i].newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } return steps; } }