Class TestDescuentoITRunner

java.lang.Object
org.jbehave.core.embedder.Embedder
giis.demo.descuento.it.jbehave.TestDescuentoITRunner

@SpringBootTest(classes={DescuentoApplication.class,DescuentoITSteps.class}, webEnvironment=RANDOM_PORT) @TestPropertySource(locations="classpath:application-test.properties") public class TestDescuentoITRunner extends org.jbehave.core.embedder.Embedder
Configuracion para ejecucion con jbehave de los escenarios escritos en gherkin determinando:
-la configuracion generar 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 mismas consideraciones que al ejeuctar pruebas unitarias salvo la configuracion del entorno web y obtencion del puerto del servidor embebido: *
- 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 de integracion ejecutados directamente desde junit. En SpringBootTest se deben anyadir las clases que contienen el mapeo de pasos. Se debe anyadir tambien la configuracion del entorno.
- 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

    Fields
    Modifier and Type
    Field
    Description
     
    (package private) static int
     
    (package private) int
     
    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
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    org.jbehave.core.configuration.Configuration
    Configuracion general por defecto, anyadiendo reports de surefire
    org.jbehave.core.embedder.EmbedderControls
    Establece los parametros que irian el plugin jbehave-maven-plugin (permite continuar ejecutando historias cuando alguna falla)
    static int
     
    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 escenarios
    protected List<String>
    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)

    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

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • springContext

      @Autowired private org.springframework.context.ApplicationContext springContext
    • config

      private JBehaveConfig config
    • randomPort

      @LocalServerPort int randomPort
    • port

      static int port
  • Constructor Details

    • TestDescuentoITRunner

      public TestDescuentoITRunner()
  • Method Details

    • getPort

      public static int getPort()
    • 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 class org.jbehave.core.embedder.Embedder
    • configuration

      public org.jbehave.core.configuration.Configuration configuration()
      Configuracion general por defecto, anyadiendo reports de surefire
      Overrides:
      configuration in class org.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 class org.jbehave.core.embedder.Embedder
    • storyPaths

      protected List<String> 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)