我能';t使用mockito替换SpringBatch中的方法调用

我能';t使用mockito替换SpringBatch中的方法调用,mockito,spring-batch,Mockito,Spring Batch,我正在尝试使用mockito替换SpringBatch中的方法调用。代码被大大简化并删除,不需要减少它,如果缺少什么,请编写,我将添加 Spring批处理设置文件 @配置 @启用批处理 公共类ListBatchConfig{ @豆子 公共作业jobListBath(JobBuilderFactory JobBuilderFactory, StepBuilderFactory StepBuilderFactory, ItemReader itemReaderListBath, 项目处理器ListB

我正在尝试使用mockito替换SpringBatch中的方法调用。代码被大大简化并删除,不需要减少它,如果缺少什么,请编写,我将添加

Spring批处理设置文件

@配置
@启用批处理
公共类ListBatchConfig{
@豆子
公共作业jobListBath(JobBuilderFactory JobBuilderFactory,
StepBuilderFactory StepBuilderFactory,
ItemReader itemReaderListBath,
项目处理器ListBath,
ItemWriter itemWriterListBath
) {
Step=stepBuilderFactory.get(“列表加载”)
.chunk(3)
.reader(itemReaderListBath)
.处理器(processorListBath)
.writer(itemWriterListBath)
.build();
返回jobBuilderFactory.get(“L-Load”)
.incrementer(新的RunIdIncrementer())
.开始(步骤)
.build();
}
@豆子
public ItemReader itemReaderListBath(){
返回新的ListItemReader();
}
...
ItemReader在单独的类列表Item Reader中描述

@组件
@Slf4j
公共类ListItemReader实现ItemReader{
@自动连线
私人CalService CalService;
DataAtributes DataAtributes;
...
@凌驾
公共学生阅读{
//Тут вызывается метод сервиса, который необходимо подменить
数据属性=新数据属性(1,“测试”);
整数val=calService.addAttr(dataAtributes);
...  
}
这是服务本身

@服务
公共类CalService{
公共int addI(int input1){
返回0;
}
公共整数addAttr(DataAtributes attr){
返回0;
}
}
在此服务中,作业将启动

@服务
公共类StartJob{
@自动连线
JobLauncher JobLauncher;
@自动连线
工作开发人员;
public void launchJob()引发异常{
...
JobExecution=jobLauncher.run(jobDeveloper,params);
以及测试类本身

@SpringBootTest
公共类CaclServisTest{
@嘲弄
CalService calcService;
@注射模拟
开始工作
@自动连线
开始工作开始工作;
@试验
void add(){
DataAtributes DataAtributes=新的DataAtributes(1,“测试”);
when(calcService.addAttr(dataAtributes)),然后return(57);
startJob.launchJob();
}
}
因此,将调用本机方法,而不是被替换的方法。
我不明白@InjectMocks应该安装什么服务,您的
@Mock
字段在Spring上下文中不可用。 特别是:
@Autowire StartJob StartJob
使用Spring上下文中的
CalService
,而不是模拟

要在Spring上下文中替换bean,请改用
@MockBean

@SpringBootTest
公共类CaclServisTest{
@蚕豆
CalService calcService;
@自动连线
开始工作开始工作;
@试验
void add(){
DataAtributes DataAtributes=新的DataAtributes(1,“测试”);
when(calcService.addAttr(dataAtributes)),然后return(57);
startJob.launchJob();
}
}

您的
@Mock
字段在Spring上下文中不可用。 特别是:
@Autowire StartJob StartJob
使用Spring上下文中的
CalService
,而不是模拟

要在Spring上下文中替换bean,请改用
@MockBean

@SpringBootTest
公共类CaclServisTest{
@蚕豆
CalService calcService;
@自动连线
开始工作开始工作;
@试验
void add(){
DataAtributes DataAtributes=新的DataAtributes(1,“测试”);
when(calcService.addAttr(dataAtributes)),然后return(57);
startJob.launchJob();
}
}

1.什么是
getCalcService()
2.什么是
setCalc()
我很抱歉。从上一个问题复制的错误。修复了代码1.什么是
getCalcService()
2.什么是
setCalc()
我很抱歉。从上一个问题复制的错误。修复了代码