【发布时间】:2019-02-10 22:03:48
【问题描述】:
我有一个ItemProcessor,它有一个@BeforeStep 方法来访问ExecutionContext:
public class MegaProcessor implements ItemProcessor<String, String> {
private ExecutionContext context;
@BeforeStep
void getExecutionContext(final StepExecution stepExecution) {
this.context = stepExecution.getExecutionContext();
}
@Override
public String process(final String string) throws Exception {
// ...
}
}
这个类的单元测试:
@ContextConfiguration(classes = MegaProcessor.class)
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, StepScopeTestExecutionListener.class })
@RunWith(SpringRunner.class)
public class MegaProcessorTest {
@Autowired
private MegaProcessor sut;
public StepExecution getStepExecution() {
StepExecution execution = MetaDataInstanceFactory.createStepExecution();
execution.getExecutionContext().put("data", "yeah");
return execution;
}
@Test
public void MegaProcessor() throws Exception {
assertNotNull(sut.process("pew pew"));
}
}
当我调试测试运行时,context 是 null 并且永远不会调用 @BeforeStep 方法。为什么会这样以及如何实现?
【问题讨论】:
标签: java spring-batch spring-boot-test