Java JobLauncherCommandLineRunner:使用[]运行默认命令行会导致JUnit测试失败

Java JobLauncherCommandLineRunner:使用[]运行默认命令行会导致JUnit测试失败,java,spring,junit,spring-batch,batch-processing,Java,Spring,Junit,Spring Batch,Batch Processing,我一直在寻找这个问题的答案,但没有结果。所以我要发布这个 每当我启动spring批处理JUnit测试时,此带有空参数的作业始终运行: 2016-04-02 06:04:00,262 INFO 3651 [main] [] o.s.b.a.b.JobLauncherCommandLineRunner - Running default command line with: [] 这会破坏我的测试,因此我无法构建我的应用程序: 2016-04-02 06:04:00,262 INFO 3651

我一直在寻找这个问题的答案,但没有结果。所以我要发布这个

每当我启动spring批处理JUnit测试时,此带有空参数的作业始终运行:

2016-04-02 06:04:00,262  INFO 3651 [main] [] o.s.b.a.b.JobLauncherCommandLineRunner - Running default command line with: []
这会破坏我的测试,因此我无法构建我的应用程序:

2016-04-02 06:04:00,262  INFO 3651 [main] [] o.s.b.a.b.JobLauncherCommandLineRunner - Running default command line with: []
2016-04-02 06:04:00,521  INFO 3651 [main] [] o.s.b.l.ClasspathLoggingApplicationListener - Application failed to start with classpath: [file:/home/ec2-user/workspace/efs-mi3-daily-recon-batch/target/surefire/surefirebooter4799221294694718787.jar, file:/home/ec2-user/.m2/repository/org/jacoco/org.jacoco.agent/0.7.2.201409121644/org.jacoco.agent-0.7.2.201409121644-runtime.jar]
2016-04-02 06:04:00,521  INFO 3651 [main] [] o.s.b.a.l.AutoConfigurationReportLoggingInitializer - 

Error starting ApplicationContext. To display the auto-configuration report enabled debug logging (start with --debug)


2016-04-02 06:04:00,522 ERROR 3651 [main] [] o.s.boot.SpringApplication - Application startup failed

java.lang.IllegalStateException: Failed to execute CommandLineRunner
    at org.springframework.boot.SpringApplication.runCommandLineRunners(SpringApplication.java:675)
    at org.springframework.boot.SpringApplication.afterRefresh(SpringApplication.java:690)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:321)
    at org.springframework.boot.test.SpringApplicationContextLoader.loadContext(SpringApplicationContextLoader.java:100)
    at org.springframework.test.context.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:68)
    at org.springframework.test.context.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:86)
    at org.springframework.test.context.DefaultTestContext.getApplicationContext(DefaultTestContext.java:72)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:117)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:212)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:200)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:259)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:261)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:219)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:83)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:68)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:163)
    at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
    at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Caused by: org.springframework.batch.core.repository.JobExecutionAlreadyRunningException: A job execution for this job is already running: JobInstance: id=4860, version=0, Job=[reconJob]
    at org.springframework.batch.core.repository.support.SimpleJobRepository.createJobExecution(SimpleJobRepository.java:120)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
    at 
我想,如果我删除批处理表中所有相关的作业条目,应用程序将成功构建。我已经删除了作业ID 4860的所有
批处理
表项。然而,我仍然得到了错误

Caused by: org.springframework.batch.core.repository.JobExecutionAlreadyRunningException: A job execution for this job is already running: JobInstance: id=4860, version=0, Job=[reconJob]
想法


编辑:如何防止JUnit测试运行默认命令行:[]

请在中添加测试question@MichaelPralow我想我明白了。我明确指定了要运行的作业名称。作业测试现在不使用
{[]}
参数执行作业,这正是我想要的。谢谢@makalshrek您是如何明确指定作业名称的?你能告诉我吗?请把测试加进去question@MichaelPralow我想我明白了。我明确指定了要运行的作业名称。作业测试现在不使用
{[]}
参数执行作业,这正是我想要的。谢谢@makalshrek您是如何明确指定作业名称的?你能告诉我吗?