Java junit测试以检查文件的创建

Java junit测试以检查文件的创建,java,junit4,mule,Java,Junit4,Mule,如果您有一个循环,它每5秒创建一次文本文件,并根据创建的时间戳对其进行命名,您是否可以创建junit测试,以查看它是否已创建?你怎么检查 谢谢你的帮助我会用。并检查是否调用了create方法以及使用了哪个文件名。您可以随时检查文件是否存在,但这更多的是集成测试而不是单元测试 建议的方法是创建某种类型的FileCreator接口,如下所示 public interface FileCreator { void createFile(Date date); } 创建格式化时间的实现,然后进

如果您有一个循环,它每5秒创建一次文本文件,并根据创建的时间戳对其进行命名,您是否可以创建junit测试,以查看它是否已创建?你怎么检查


谢谢你的帮助

我会用。并检查是否调用了create方法以及使用了哪个文件名。

您可以随时检查文件是否存在,但这更多的是集成测试而不是单元测试

建议的方法是创建某种类型的
FileCreator
接口,如下所示

public interface FileCreator {
    void createFile(Date date);
}
创建格式化时间的实现,然后进行单元测试-在调用
createFile
时,验证文件是否确实已创建。这应该很简单

现在,在创建文件的类中使用它——假设它是这样的

public class FileCreationManager {

    private final FileCreator fileCreator;
    private final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
    private Future<?> taskHandle;

    public FileCreationManager(final FileCreator fileCreator) {
        this.fileCreator = fileCreator;
    }

    public void startFileCreation() {
        taskHandle = executorService.scheduleAtFixedRate(new Runnable() {
            @Override
            public void run() {
                fileCreator.createFile(new Date());
            }
        }, 0, 5, TimeUnit.SECONDS);
    }

    public void stopFileCreation() {
        taskHandle.cancel(false);
        executorService.shutdown();
        try {
            executorService.awaitTermination(1, TimeUnit.MINUTES);
        } catch (InterruptedException ex) {
            Thread.currentThread().interrupt();
        }
    }
}
公共类FileCreationManager{
私有最终文件创建者文件创建者;
private final ScheduledExecutorService executorService=Executors.newSingleThreadScheduledExecutor();
私人未来任务手柄;
公共文件创建管理器(最终文件创建者文件创建者){
this.fileCreator=fileCreator;
}
public void startFileCreation(){
taskHandle=executorService.scheduleAtFixedRate(新的可运行(){
@凌驾
公开募捐{
createFile(新日期());
}
},0,5,时间单位为秒);
}
公共void stopFileCreation(){
taskHandle.cancel(假);
executorService.shutdown();
试一试{
执行人服务。等待终止(1,时间单位。分钟);
}捕获(中断异常例外){
Thread.currentThread().interrupt();
}
}
}
单元测试可以通过
FileCreator
的虚拟实现,只需检查
createFile
是否使用正确的
Date
调用即可


你可以运行创建线程几秒钟,然后收集传递到
集合中的
日期
-你的单位接下来需要检查
日期
是否相隔5秒,以及它们的数量是否正确。

我会模拟用于实际创建文件的对象,并验证是否使用正确的参数调用了创建函数。IMHO它不再是一个单元测试了,如果你真的需要验证文件系统中创建的文件。。。