Как лучше всего проверить поток заданий в Spring-Batch?

У меня есть сложное пакетное приложение, и я хочу проверить правильность моих предположений о потоке. .

Вот сильно упрощенная версия того, с чем я работаю:

<beans>
  <batch:job id="job1">
    <batch:step id="step1" next="step2">
      <batch:tasklet ref="someTask1"/>
    </batch:step>
    <batch:step id="step2.master">
      <batch:partition partitioner="step2Partitioner"
            step="step2" />
      <batch:next on="*" to="step3" />
      <batch:next on="FAILED" to="step4" />
    </batch:step>
    <batch:step id="step3" next="step3">
      <batch:tasklet ref="someTask1"/>
    </batch:step>
    <batch:step id="step4" next="step4">
      <batch:tasklet ref="someTask1"/>
    </batch:step>
  </batch:job>
  <batch:job id="job2">
    <batch:step id="failingStep">
      <batch:tasklet ref="failingTasklet"/>
    </batch:step>
  </batch:job>

  <bean id="step2Partitioner" class="org.springframework.batch.core.partition.support.MultiResourcePartitioner" scope="step">
    <property name="resources" value="file:${file.test.resources}/*" />
  </bean>

  <bean id="step2" class="org.springframework.batch.core.step.job.JobStep">
    <property name="job" ref="job2" />
    <property name="jobLauncher" ref="jobLauncher" />
    <property name="jobRepository" ref="jobRepository" />
  </bean>
</beans>

Job1 - это задание, которое я хочу протестировать. Я действительно хочу протестировать только переход step2.master на step3 или step4. Я не хотите вообще протестировать шаг 1 ...

Однако Я хочу сохранить спецификацию Job1 без изменений, поскольку этот тест проверяет конфигурацию, а не основные действия. У меня уже есть приемочные испытания для сквозного тестирования. Этот пример предназначен для того, чтобы я мог писать целевые тесты для небольших вариаций, не создавая отдельных сквозных тестов для каждого пограничного случая.

Я хочу проверить, что, когда задание на шаге 2 не удается, step2.master пересылает меня на к шагу 4, а не к шагу 3.

$json_str = '{"urls":["http://example.com/001.jpg","http://example.com/003.jpg","http://example.com/002.jpg"],"alts":["testing int chars àèéìòóù stop","second description",""],"favs":["true", "false", "false"]}';

$j_string_decoded = json_decode($json_str);
// echo print_r($j_string_decoded); // OK

// test get url from second item
echo j_string_decoded['urls'][1];
// Fatal error: Cannot use object of type stdClass as array
12
задан Community 23 May 2017 в 11:54
поделиться