Class JobLauncherTestUtils
Utility class for testing batch jobs. It provides methods for launching an
entire AbstractJob
, allowing for end to end testing of individual
steps, without having to run every step in the job. Any test classes using
this utility can set up an instance in the ApplicationContext
as part
of the Spring test framework.
This class also provides the ability to run Step
s from a
FlowJob
or SimpleJob
individually. By launching Step
s
within a Job
on their own, end to end testing of individual steps can
be performed without having to run every step in the job.
It should be noted that using any of the methods that don't contain
JobParameters
in their signature, will result in one being created
with a random number of type long
as a parameter. This will ensure
restartability when no parameters are provided.
- Since:
- 2.1
- Author:
- Lucas Ward, Dan Garrette, Dave Syer, Mahmoud Ben Hassine
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptiongetJob()
protected StepRunner
Convenient method for subclasses to grab aStepRunner
for running steps by name.Launch the entire job, including all steps.launchJob
(JobParameters jobParameters) Launch the entire job, including all stepslaunchStep
(String stepName) Launch just the specified step in the job.launchStep
(String stepName, JobParameters jobParameters) Launch just the specified step in the job.launchStep
(String stepName, JobParameters jobParameters, ExecutionContext jobExecutionContext) Launch just the specified step in the job.launchStep
(String stepName, ExecutionContext jobExecutionContext) Launch just the specified step in the job.void
The Job instance that can be manipulated (e.g.void
setJobLauncher
(JobLauncher jobLauncher) AJobLauncher
instance that can be used to launch jobs.void
setJobRepository
(JobRepository jobRepository) TheJobRepository
to use for creating newJobExecution
instances.
-
Field Details
-
logger
protected final org.apache.commons.logging.Log loggerLogger
-
-
Constructor Details
-
JobLauncherTestUtils
public JobLauncherTestUtils()
-
-
Method Details
-
setJob
The Job instance that can be manipulated (e.g. launched) in this utility.- Parameters:
job
- theAbstractJob
to use
-
setJobRepository
TheJobRepository
to use for creating newJobExecution
instances.- Parameters:
jobRepository
- aJobRepository
-
getJobRepository
- Returns:
- the job repository
-
getJob
- Returns:
- the job
-
setJobLauncher
AJobLauncher
instance that can be used to launch jobs.- Parameters:
jobLauncher
- a job launcher
-
getJobLauncher
- Returns:
- the job launcher
-
launchJob
Launch the entire job, including all steps.- Returns:
- JobExecution, so that the test can validate the exit status
- Throws:
Exception
- thrown if error occurs launching the job.
-
launchJob
Launch the entire job, including all steps- Parameters:
jobParameters
- instance ofJobParameters
.- Returns:
- JobExecution, so that the test can validate the exit status
- Throws:
Exception
- thrown if error occurs launching the job.
-
getUniqueJobParameters
- Returns:
- a new JobParameters object containing only a parameter with a
random number of type
long
, to ensure that the job instance will be unique.
-
getUniqueJobParametersBuilder
- Returns:
- a new JobParametersBuilder object containing only a parameter with a
random number of type
long
, to ensure that the job instance will be unique.
-
getStepRunner
Convenient method for subclasses to grab aStepRunner
for running steps by name.- Returns:
- a
StepRunner
-
launchStep
Launch just the specified step in the job. A unique set of JobParameters will automatically be generated. An IllegalStateException is thrown if there is no Step with the given name.- Parameters:
stepName
- The name of the step to launch- Returns:
- JobExecution
-
launchStep
Launch just the specified step in the job. A unique set of JobParameters will automatically be generated. An IllegalStateException is thrown if there is no Step with the given name.- Parameters:
stepName
- The name of the step to launchjobExecutionContext
- An ExecutionContext whose values will be loaded into the Job ExecutionContext prior to launching the step.- Returns:
- JobExecution
-
launchStep
Launch just the specified step in the job. An IllegalStateException is thrown if there is no Step with the given name.- Parameters:
stepName
- The name of the step to launchjobParameters
- The JobParameters to use during the launch- Returns:
- JobExecution
-
launchStep
public JobExecution launchStep(String stepName, JobParameters jobParameters, @Nullable ExecutionContext jobExecutionContext) Launch just the specified step in the job. An IllegalStateException is thrown if there is no Step with the given name.- Parameters:
stepName
- The name of the step to launchjobParameters
- The JobParameters to use during the launchjobExecutionContext
- An ExecutionContext whose values will be loaded into the Job ExecutionContext prior to launching the step.- Returns:
- JobExecution
-