Package giis.demo.descuento.ut.jbehave
Class TestDescuentoRunner
java.lang.Object
org.jbehave.core.embedder.Embedder
giis.demo.descuento.ut.jbehave.TestDescuentoRunner
@SpringBootTest(classes={DescuentoApplication.class,DescuentoRepositorySteps.class})
@TestPropertySource(locations="classpath:application-test.properties")
public class TestDescuentoRunner
extends org.jbehave.core.embedder.Embedder
Configuracion para ejecucion con jbehave de los escenarios escritos en gherkin determinando:
-la configuracion general a utilizar
-los archivos que contienen los escenarios y pasos en gherkin
-las clases java que implementan el mapeo de los pasos.
La ejecucion de los pasos se realiza en el entorno de Spring, por lo que a diferencia de las configuraciones realizadas en el proyecto samples-test-java aqui se tienen que tener en cuenta las siguientes consideraciones:
- Para que los pasos se puedan ejecutar en el contexto de Spring, se debe definir esta clase con los mismos atributos que en el caso de tests unitarios ejecutados directamente desde junit. En SpringBootTest se deben anyadir las clases que contienen el mapeo de pasos.
- El metodo InjectableStepsFactory que en pruebas sin spring instanciaba las clases que contienen el mapeo de los pasos, debe cambiar puesto que estas clases deben instanciarse en el contexto de Spring. Para ello se utiliza SpringStepsFactory en vez de InstanceStepsFactory (no hace falta indicar las clases porque busca automaticamente todas las que tengan alguna anotacion de jbehave).
- Con esto, se podrian ejecutar las historias desde Eclipse, pero no desde maven utilizando jbehave-maven-plugin. La causa es que al ejecutarse run-stories-as-embeddables, esta clase obtiene un contexto de Spring nulo. Para solucionarlo, se hereda de Embedder en vez de JUnitStories, y se implementa el test case run().
-la configuracion general a utilizar
-los archivos que contienen los escenarios y pasos en gherkin
-las clases java que implementan el mapeo de los pasos.
La ejecucion de los pasos se realiza en el entorno de Spring, por lo que a diferencia de las configuraciones realizadas en el proyecto samples-test-java aqui se tienen que tener en cuenta las siguientes consideraciones:
- Para que los pasos se puedan ejecutar en el contexto de Spring, se debe definir esta clase con los mismos atributos que en el caso de tests unitarios ejecutados directamente desde junit. En SpringBootTest se deben anyadir las clases que contienen el mapeo de pasos.
- El metodo InjectableStepsFactory que en pruebas sin spring instanciaba las clases que contienen el mapeo de los pasos, debe cambiar puesto que estas clases deben instanciarse en el contexto de Spring. Para ello se utiliza SpringStepsFactory en vez de InstanceStepsFactory (no hace falta indicar las clases porque busca automaticamente todas las que tengan alguna anotacion de jbehave).
- Con esto, se podrian ejecutar las historias desde Eclipse, pero no desde maven utilizando jbehave-maven-plugin. La causa es que al ejecutarse run-stories-as-embeddables, esta clase obtiene un contexto de Spring nulo. Para solucionarlo, se hereda de Embedder en vez de JUnitStories, y se implementa el test case run().
-
Nested Class Summary
Nested classes/interfaces inherited from class org.jbehave.core.embedder.Embedder
org.jbehave.core.embedder.Embedder.AnnotatedEmbedderRunFailed, org.jbehave.core.embedder.Embedder.EmbedderFailureStrategy, org.jbehave.core.embedder.Embedder.RunningEmbeddablesFailed, org.jbehave.core.embedder.Embedder.RunningStoriesFailed, org.jbehave.core.embedder.Embedder.ThrowingRunningStoriesFailed, org.jbehave.core.embedder.Embedder.ViewGenerationFailed
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate JBehaveConfig
private org.springframework.context.ApplicationContext
Fields inherited from class org.jbehave.core.embedder.Embedder
classLoader, configuration, embedderControls, embedderFailureStrategy, embedderMonitor, executorService, executorServiceCreated, metaFilters, metaMatchers, performableTree, stepsFactory, storyManager, storyMapper, systemProperties, timeoutParsers
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionorg.jbehave.core.configuration.Configuration
Configuracion general por defecto, anyadiendo reports de surefireorg.jbehave.core.embedder.EmbedderControls
Establece los parametros que irian el plugin jbehave-maven-plugin (permite continuar ejecutando historias cuando alguna falla)void
run()
Ejecuta el test de todas las historias, se pueden crear test diferentes, revisando las historias que se ejecutaran en cada uno (obtenidas con storyPaths())org.jbehave.core.steps.InjectableStepsFactory
Asocia las clases java que implementan cada uno de los pasos de los escenariosAsocia (localiza) los archivos con escenarios (*.story) que se encuentran en la misma carpeta que esta clase (antes de ejecutar los tests se copian desde la carpeta de fuentes a la carpeta de clases)Methods inherited from class org.jbehave.core.embedder.Embedder
classLoader, configureThreads, embedderFailureStrategy, embedderMonitor, executorService, generateReportsView, generateReportsView, generateSurefireReport, hasExecutorService, mapStoriesAsPaths, metaFilter, metaFilters, metaMatchers, performableTree, processSystemProperties, reportMatchingStepdocs, reportStepdocs, reportStepdocs, reportStepdocsAsEmbeddables, runAsEmbeddables, runStoriesAsPaths, runStoriesWithAnnotatedEmbedderRunner, shutdownExecutorService, storyManager, systemProperties, timeoutParsers, toString, useClassLoader, useConfiguration, useEmbedderControls, useEmbedderFailureStrategy, useEmbedderMonitor, useExecutorService, useMetaFilters, useMetaMatchers, usePerformableTree, useStepsFactory, useSystemProperties, useTimeoutParsers
-
Field Details
-
springContext
@Autowired private org.springframework.context.ApplicationContext springContext -
config
-
-
Constructor Details
-
TestDescuentoRunner
public TestDescuentoRunner()
-
-
Method Details
-
run
public void run()Ejecuta el test de todas las historias, se pueden crear test diferentes, revisando las historias que se ejecutaran en cada uno (obtenidas con storyPaths()) -
embedderControls
public org.jbehave.core.embedder.EmbedderControls embedderControls()Establece los parametros que irian el plugin jbehave-maven-plugin (permite continuar ejecutando historias cuando alguna falla)- Overrides:
embedderControls
in classorg.jbehave.core.embedder.Embedder
-
configuration
public org.jbehave.core.configuration.Configuration configuration()Configuracion general por defecto, anyadiendo reports de surefire- Overrides:
configuration
in classorg.jbehave.core.embedder.Embedder
-
stepsFactory
public org.jbehave.core.steps.InjectableStepsFactory stepsFactory()Asocia las clases java que implementan cada uno de los pasos de los escenarios- Overrides:
stepsFactory
in classorg.jbehave.core.embedder.Embedder
-
storyPaths
Asocia (localiza) los archivos con escenarios (*.story) que se encuentran en la misma carpeta que esta clase (antes de ejecutar los tests se copian desde la carpeta de fuentes a la carpeta de clases)
-