Java 单元测试Spring外部的FlatFileItemWriter-“;必须先打开Writer,然后才能将其写入;例外

Java 单元测试Spring外部的FlatFileItemWriter-“;必须先打开Writer,然后才能将其写入;例外,java,spring-batch,Java,Spring Batch,我正在编写一个编写CSV文件的简单批处理,我想使用SpringBatchFlatFileItemWriter,使用SpringBoot2.3.1.RELEASE 我想对我的编写器进行单元测试,以便确认它配置正确 代码非常简单: 公共类CSVResultWriter实现ItemWriter{ 私有最终FlatFileItemWriter; 公共CSVResultWriter(字符串输出资源){ writer=新FlatFileItemWriterBuilder() .name(“项目作者”) .r

我正在编写一个编写CSV文件的简单批处理,我想使用SpringBatch
FlatFileItemWriter
,使用SpringBoot2.3.1.RELEASE

我想对我的编写器进行单元测试,以便确认它配置正确

代码非常简单:

公共类CSVResultWriter实现ItemWriter{
私有最终FlatFileItemWriter;
公共CSVResultWriter(字符串输出资源){
writer=新FlatFileItemWriterBuilder()
.name(“项目作者”)
.resource(新文件系统资源(输出资源))
.lineAggregator(新的PassThroughLineAggregator())
.append(true)
.build();
}
@凌驾

public void write(ListFlatFileItemWriter
实现契约,在Spring批处理作业中使用时将自动遵守契约

如果您想在Spring之外使用writer,您需要手动调用这些方法(打开/更新/关闭)。这在参考文档的一节中提到:

Clients of an ItemReader that also implement ItemStream should call open before any calls
to read, in order to open any resources such as files or to obtain connections.
A similar restriction applies to an ItemWriter that implements ItemStream

非常感谢。我看到了open方法,但是因为它有一个我不知道如何提供的预期参数,所以我没有详细介绍。但实际上很简单:我有一个特定于测试的实现:公共类TestCSVResultWriter扩展了CSVResultWriter{public TestCSVResultWriter(String outputResource){super(outputResource);writer.open(mock(ExecutionContext.class));}