Class AbstractExternalizedFlowExecutionTests

java.lang.Object
junit.framework.Assert
junit.framework.TestCase
org.springframework.webflow.test.execution.AbstractFlowExecutionTests
org.springframework.webflow.test.execution.AbstractExternalizedFlowExecutionTests
All Implemented Interfaces:
junit.framework.Test
Direct Known Subclasses:
AbstractXmlFlowExecutionTests

public abstract class AbstractExternalizedFlowExecutionTests extends AbstractFlowExecutionTests
Base class for flow integration tests that verify an externalized flow definition executes as expected. Supports caching of the flow definition built from an externalized resource to speed up test execution.
Author:
Keith Donald, Scott Andrews
  • Constructor Details

    • AbstractExternalizedFlowExecutionTests

      public AbstractExternalizedFlowExecutionTests()
      Constructs a default externalized flow execution test.
      See Also:
      • TestCase.setName(String)
    • AbstractExternalizedFlowExecutionTests

      public AbstractExternalizedFlowExecutionTests(String name)
      Constructs an externalized flow execution test with given name.
      Parameters:
      name - the name of the test
  • Method Details

    • isCacheFlowDefinition

      protected boolean isCacheFlowDefinition()
      Returns if flow definition caching is turned on.
    • setCacheFlowDefinition

      protected void setCacheFlowDefinition(boolean cacheFlowDefinition)
      Sets the flag indicating if the flow definition built from an externalized resource as part of this test should be cached. Default is false.
    • setFlowExecutionAttributes

      protected void setFlowExecutionAttributes(AttributeMap<Object> executionAttributes)
      Sets system attributes to be associated with the flow execution the next time one is started. by this test. Useful for assigning attributes that influence flow execution behavior.
      Parameters:
      executionAttributes - the system attributes to assign
    • setFlowExecutionListener

      protected void setFlowExecutionListener(FlowExecutionListener executionListener)
      Set a single listener to be attached to the flow execution the next time one is started by this test. Useful for attaching a listener that does test assertions during the execution of the flow.
      Parameters:
      executionListener - the listener to attach
    • setFlowExecutionListeners

      protected void setFlowExecutionListeners(FlowExecutionListener[] executionListeners)
      Set the listeners to be attached to the flow execution the next time one is started. by this test. Useful for attaching listeners that do test assertions during the execution of the flow.
      Parameters:
      executionListeners - the listeners to attach
    • getResourceFactory

      protected FlowDefinitionResourceFactory getResourceFactory()
      Returns the factory used to create pointers to externalized flow definition resources.
      Returns:
      the resource factory
    • createResourceLoader

      protected org.springframework.core.io.ResourceLoader createResourceLoader()
      Returns the ResourceLoader used by the FlowDefinitionResourceFactory to load flow resources from a path. Subclasses may override to customize the resource loader used.
      Returns:
      the resource loader
      See Also:
    • getFlowDefinition

      protected final FlowDefinition getFlowDefinition()
      Description copied from class: AbstractFlowExecutionTests
      Returns the flow definition to be tested. Subclasses must implement.
      Specified by:
      getFlowDefinition in class AbstractFlowExecutionTests
      Returns:
      the flow definition
    • getFlow

      protected final Flow getFlow()
      Returns the flow definition being tested as a Flow implementation. Useful if you need to do specific assertions against the configuration of the implementation.
    • buildFlow

      protected final Flow buildFlow()
      Factory method to assemble a flow definition from a resource. Called by getFlowDefinition() to create the "main" flow to test. May also be called by subclasses to create subflow definitions whose executions should also be exercised by this test.
      Returns:
      the built flow definition, ready for execution
    • configureFlowBuilderContext

      protected void configureFlowBuilderContext(MockFlowBuilderContext builderContext)
      Subclasses may override this hook to customize the builder context for the flow being tested. Useful for registering mock subflows or other flow builder services. By default, this method does nothing.
      Parameters:
      builderContext - the mock flow builder context to configure
    • getFlowDefinitionRegistry

      protected FlowDefinitionRegistry getFlowDefinitionRegistry()
      Returns a reference to the flow definition registry used by the flow being tested to load subflows. Allows late registration of dependent subflows on a per test-case basis. This is an alternative to registering such subflows upfront in configureFlowBuilderContext(MockFlowBuilderContext).
      Returns:
      the flow definition registry
    • getResource

      protected abstract FlowDefinitionResource getResource(FlowDefinitionResourceFactory resourceFactory)
      Get the resource defining the flow to be tested.
      Parameters:
      resourceFactory - a helper for constructing the resource to be tested
      Returns:
      the flow definition resource
    • createFlowBuilder

      protected abstract FlowBuilder createFlowBuilder(FlowDefinitionResource resource)
      Create the flow builder to build the flow at the specified resource location.
      Parameters:
      resource - the resource location of the flow definition
      Returns:
      the flow builder that can build the flow definition