0
我想在單步測試(如「在測試時間」)注入一些在我的sprint批處理步驟流的運行時提供的上下文值。我們已瀏覽this 但它不是很清楚...如何在單個彈簧批量步驟的測試時間注入上下文執行?
下面我簡單的測試用例,豐富了我的紅色here。 必須有一個錯誤,因爲我看不到我的注射效果,即使我精進入getStepExecution():
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:launch-context.xml" })
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, StepScopeTestExecutionListener.class }) // Inject feature enablers ?
public class ImportJobOrganisationViaRouting extends DwhITest {
\t
\t protected static final Logger logger = LoggerFactory.getLogger(ImportJobOrganisationViaRouting.class);
\t @Autowired
\t protected JobLauncher jobLauncher;
\t @Autowired
\t @Qualifier("myjob")
\t protected Job job;
\t protected JobParameters jobParameters;
\t
\t private static JobExecution jobExecution;
\t // Inject values in here ?...
\t public StepExecution getStepExection() {
\t \t System.out.println("!!!!!! TEST inject EXECUTION STEP !!!!!!!");
\t \t StepExecution execution = MetaDataInstanceFactory.createStepExecution();
\t \t execution.getExecutionContext().putLong("dateKey", 200);
\t \t return execution;
\t }
\t
\t @Test
\t public void launch() throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException, JobParametersInvalidException {
\t \t
\t \t jobParameters = new JobParametersBuilder().addLong("currTime", System.currentTimeMillis()).toJobParameters();
\t \t jobExecution = jobLauncher.run(job, jobParameters);
\t \t assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
\t }
如何應對這種需求?
我們會深表謝意。
Thx提前,;-)
在你的問題你的狀態,你要執行'Step' ,但在你的測試中,你正在執行一項工作。你想要做什麼? –
真的,邁克爾! 這是我想要執行的工作。 但它也可能是一個單一的步驟。說這是我想要在其上下文中用注入值進行測試的一個步驟... – SylvainR
幾個月後......對於此線程感興趣的人:響應在這裏:http://docs.spring.io/spring-batch/軀幹/參考/ HTML/testing.html – SylvainR