Class StepScopeTestExecutionListener

java.lang.Object
org.springframework.batch.test.StepScopeTestExecutionListener
All Implemented Interfaces:
org.springframework.test.context.TestExecutionListener

public class StepScopeTestExecutionListener extends Object implements org.springframework.test.context.TestExecutionListener
A TestExecutionListener that sets up step-scope context for dependency injection into unit tests. A StepContext will be created for the duration of a test method and made available to any dependencies that are injected. The default behaviour is just to create a StepExecution with fixed properties. Alternatively it can be provided by the test case as a factory methods returning the correct type. Example:
 @ContextConfiguration
 @TestExecutionListeners( { DependencyInjectionTestExecutionListener.class, StepScopeTestExecutionListener.class })
 @RunWith(SpringJUnit4ClassRunner.class)
 public class StepScopeTestExecutionListenerIntegrationTests {

        // A step-scoped dependency configured in the ApplicationContext
        @Autowired
        private ItemReader<String> reader;

  public StepExecution getStepExecution() {
    StepExecution execution = MetaDataInstanceFactory.createStepExecution();
    execution.getExecutionContext().putString("foo", "bar");
    return execution;
  }

        @Test
        public void testStepScopedReader() {
                // Step context is active here so the reader can be used,
      // and the step execution context will contain foo=bar...
                assertNotNull(reader.read());
        }

 }
 
Author:
Dave Syer, Chris Schaefer, Mahmoud Ben Hassine
  • Constructor Details

    • StepScopeTestExecutionListener

      public StepScopeTestExecutionListener()
  • Method Details

    • prepareTestInstance

      public void prepareTestInstance(org.springframework.test.context.TestContext testContext)
      Set up a StepExecution as a test context attribute.
      Specified by:
      prepareTestInstance in interface org.springframework.test.context.TestExecutionListener
      Parameters:
      testContext - the current test context
      See Also:
      • TestExecutionListener.prepareTestInstance(TestContext)
    • beforeTestMethod

      public void beforeTestMethod(org.springframework.test.context.TestContext testContext)
      Specified by:
      beforeTestMethod in interface org.springframework.test.context.TestExecutionListener
      Parameters:
      testContext - the current test context
      See Also:
      • TestExecutionListener.beforeTestMethod(TestContext)
    • afterTestMethod

      public void afterTestMethod(org.springframework.test.context.TestContext testContext)
      Specified by:
      afterTestMethod in interface org.springframework.test.context.TestExecutionListener
      Parameters:
      testContext - the current test context
      See Also:
      • TestExecutionListener.afterTestMethod(TestContext)
    • getStepExecution

      protected StepExecution getStepExecution(org.springframework.test.context.TestContext testContext)
      Discover a StepExecution as a field in the test case or create one if none is available.
      Parameters:
      testContext - the current test context
      Returns:
      a StepExecution