[英]Crawling local filesystem - how to test that
我打算构建一个应用程序,它将以深度优先搜索的方式抓取本地文件系统(子树)的一部分并处理它找到的所有文件,除了一些可配置的异常。
举个例子,假设我有一个像这样的目录结构:
> documents
- generic-doc.txt
> mails
- mail-01.txt
- mail-02.txt
- mail-03.txt
> unread
- mail-04.txt
> invoices
> paid
- invoice-01.pdf
- invoice-02.pdf
> unpaid
- invoice-03.pdf
我也有这样的排除规则:
exclude = "documents/mails/unread | documents/invoices"
根据输入的这些数据,我的应用程序将处理以下文档:
(例如,它会处理所有文件,但位于文件/邮件/未读和文件/发票文件夹中的文件除外)
将来,我可能需要实施各种形式的exlusion规则。
测试爬行模块实现的最佳方法是什么(例如,当给定排除规则时,模块将返回正确的文档集)? 可以在不使用真实文件系统的情况下完成吗?
将排除规则提取到单独的模块/类/对象并单独测试。 然后确保您的抓取工具在处理文件之前询问ExclusionRule。
草图
public interface FileExcluder {
boolean isExcluded(File aFile);
}
请注意,已经存在提供类似服务的FileFilter ,也许您可以重用该抽象。
如果您使用的是Java 7,则可以创建一个虚拟文件系统。 (假设你正在使用它)
您可以创建一个可以模拟所有文件处理操作的接口,但创建测试文件并测试它们(并在完成后删除它们)可能要简单得多
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.