在我测试的步骤中具有jobExplorer.getJobExecution(jobId)。它返回的ExecutionContext为null的jobExecution。使用JobLauncherTestUtils.launch(name,param,precookedContext)启动步骤时如何提供此ExecutionContext?
我曾尝试使用@MockBean模拟jobExplorer,但我需要使用Mockito来解决。
在工作中:
@Bean(name="sampleWriter")
@StepScope
public FlatFileItemWirter<String> sampleWriter(
#stepExecution.jobExecution.id long jobId){
RandomClass randomClass= RandomClass(jobExplorer.getJobExecution(jobId));
new FlatFileItemWriterBuilder<String>
.name()
.writer(randomClass)
.build();
}
我希望返回带有ExecutionContext的jobExecution,但实际的jobExecution返回null值。
答案 0 :(得分:0)
使用MockitoJUnitRunner
和@Mock
的测试类示例
@RunWith(MockitoJUnitRunner.class)
public class TaskletTest {
@Mock
StepContribution stepContribution;
@Mock
ChunkContext chunkContext;
@Mock
StepContext stepContext;
@Mock
StepExecution stepExecution;
@Mock
JobExecution jobExecution;
@Mock
ExecutionContext executionContext;
@Mock
JobExecution jobExecution
@Before
public void setup() {
when(chunkContext.getStepContext()).thenReturn(stepContext);
when(stepContext.getStepExecution()).thenReturn(stepExecution);
when(stepExecution.getJobExecution()).thenReturn(jobExecution);
when(jobExecution.getExecutionContext()).thenReturn(executionContext);
MockitoAnnotations.init(this);
}
@Test
public void yourTestCase() {
//custom logic
}
}
答案 1 :(得分:0)
spring-batch-test
模块提供了几种测试实用程序,其中两种可能对您有用:
我不应该使用模拟框架。
使用这些类,您可以在不使用模拟的情况下实现测试。
希望这会有所帮助。