【问题标题】:Mocking JobExplorer using @MockBean throwing an Exception: InstanceAlreadyException使用 @MockBean 模拟 JobExplorer 并抛出异常:InstanceAlreadyException
【发布时间】:2019-02-01 10:24:41
【问题描述】:

“我如何在使用单步测试时模拟 JobExecution JobLauncherTestUtils?”

“我试过了

@MockBean JobExplorer jobExplorer 

但它正在抛出异常:

Failed to load applicationContext,Caused by InstanceAlreadyExistsException

但是当我单独运行它时它工作正常。所以我尝试使用

@Mock JobExplorer jobExplorer;
public void setUp(){
    MockitoAnnotations.init(this);
}

但是这个甚至不起作用:(然后我添加了

@RunWith(MockitoJunitRunner.class)
@Configuartion(...)
class MockTest{
@Mock JobExplorer jobExplorer
public void setUp(){
    MockitoAnnotations.init(this);
}

}

主代码:


@RunWith(SpringRunner.class)
@Configuration(classes=TestConfig.class)
Class MockTest{
   private static final String jobName ="job";
   @Autowired JobLauncherTestUtils;
   @Autowired JobRegistry jobRegistry;
   @MockBean JobExplorer jobExplorer;
@Before
public void setUp(){
   Job job = jobRegistry.getJob(jobName);
   JobInstance jobInstance = new JobInstance(0L,job.getName());
   JobExecution jobExecution = new JobExecution(0L);
   jobExecution.setJobInstance(jobInstance);
}
@Test
public testMock(){
   //jobParams
   Data data = new Data();
   ExecutionContext context = new ExecutionContext();
   context.put("data",Data);
   jobExecution.setExecutionContext(context);
   when(jobExplorer.getJobExecution(any()).thenReturn(jobExecution);
   JobExecution jobExecution = testUtils.launchStep("stepname",context);
}
@After
public void tearDown(){
//statements
}

【问题讨论】:

    标签: java spring junit mockito spring-batch-tasklet


    【解决方案1】:

    请记住,只需使用:

    @Mock JobExecution jobExecution
    public void setUp(){
        MockitoAnnotations.init(this);
    }
    

    不会将该模拟实例注入到您期望的位置,或将其声明为实例变量的位置。

    这段代码很好,你不需要在上面使用@RunWith(MockitoJunitRunner.class)

    您需要做的是在您的@Test@Before 方法中手动注入/设置jobExecution 实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-30
      • 1970-01-01
      • 2017-07-11
      相关资源
      最近更新 更多