java - 具有删除目录方法的单元测试文件实用程序类

标签 java file unit-testing

我有一个带有deleteDir函数的文件实用程序类

@Override
public boolean deleteDir(File file) {
    File[] contents = file.listFiles();
    if (contents != null) {
        for (File f : contents) {
            if (! Files.isSymbolicLink(f.toPath())) {
                deleteDir(f);
            }
        }
    }
    file.delete();
    return true;
}

我有另一个类,它的方法调用文件实用程序的这个 deleteDir 函数

@Override
    public void zipFolder(List<String> listOfFiles, File file, ZipOutputStream zos) {
        try {
            int index = 0;
            for (File f : file.listFiles()) {
                if (this.fileValidator.isHiddenFile(f))
                    continue;
                if (f.isFile()) {
                    File returnedZipFile = zipFileInFolder(f);
                    File fileToBeRemoved = writeIntoZip(returnedZipFile, index, zos);
                    this.fileUtility.deleteDir(fileToBeRemoved);
                    index++;
                } else if (f.isDirectory()) {
                    List<String> listOfFilesInDirectory = this.directoryProcessor.getAllFilesInDirectory(f);
                    String fullZipFullName = this.pathNameUtility.getFullFileName(f.getName(), FileConstants.ZIP);
                    FileOutputStream fos = new FileOutputStream(fullZipFullName);
                    ZipOutputStream zosInner = new ZipOutputStream(fos);
                    zipFolder(listOfFilesInDirectory, f, zosInner);
                }
            }
            zos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

我读到我们不应该模拟文件。我想对这两种方法进行单元测试。我怎样才能这样做?谢谢

最佳答案

解决方案不是一个Mock,而是一个Spyspy就像选择性模拟,您可以拥有一些调用实际操作的方法,而其他方法可以进行模拟。因此,在测试 zipFolder 时,您可以模拟您的 deleteDir 调用。

关于java - 具有删除目录方法的单元测试文件实用程序类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59873947/

相关文章:

ios - UITableView 单元的单元测试。访问单元的 Nib

java - 使用 Apache POI 将单元格内容的一部分设置为下划线?

java - 如何将 HTTP 请求发送到在 docker 容器中运行的服务器?

java - 从流中删除开头和结尾字符

c++ - 读写bin文件数据不对

c++ - 在 C++ 中搜索文件夹

java - Mockito @InjectMocks 不适用于相同类型的字段

unit-testing - ssis 包中的单元测试数据流

java - 仅使用一个参数数组递归查找数组中的平均值

java - Jackson 序列化枚举和非传统 setter / getter