Java 使用@MockBean模拟JobExplorer引发异常:InstanceAlreadyException

Java 使用@MockBean模拟JobExplorer引发异常:InstanceAlreadyException,java,spring,junit,mockito,spring-batch-tasklet,Java,Spring,Junit,Mockito,Spring Batch Tasklet,“在测试单个步骤时,如何使用 JobLauncherTestUtils?” “我试过了 @MockBean JobExplorer jobExplorer 但它抛出了一个例外: Failed to load applicationContext,Caused by InstanceAlreadyExistsException 但是当我单独运行它时,它工作得很好。所以我尝试使用 @Mock JobExplorer jobExplorer; public void setUp(){ M

“在测试单个步骤时,如何使用 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);
}
}

主要代码:



请记住,只需使用:

@Mock JobExecution jobExecution
public void setUp(){
    MockitoAnnotations.init(this);
}
不会导致将模拟实例注入到您期望的位置,或将其声明为实例变量的位置

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

您需要做的是在
@Test
@Before
方法中手动注入/设置
作业执行
实例

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