2012-12-13 37 views
0

我打算构建一个应用程序,它将以深度优先搜索的方式抓取本地文件系统(子树)的一部分,并处理它找到的所有文件,除了一些可配置的例外。抓取本地文件系统 - 如何测试


举个例子,假设我有一个这样的目录结构:

> 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" 

鉴于这些数据输入,我的申请会处理以下文件:

  • 仿制doc.txt
  • 邮件-01.txt
  • 邮件-02.txt中
  • 邮件-03.txt

(例如它会处理所有文件,但位于文档/邮件/未读和文档/发票文件夹中的文件除外)

将来,我可能需要实现各种形式的exlusion规则。


什么是测试爬行模块的实现的最佳途径(例如,鉴于排除规则时,该模块将返回一组正确的文件)?可以在不使用真正的文件系统的情况下完成吗?

回答

1

将排除规则提取到单独的模块/类/对象并单独进行测试。然后确保您的抓取工具在处理文件之前询问ExclusionRule。

草图

public interface FileExcluder { 
    boolean isExcluded(File aFile); 
} 

注意,已经有提供类似服务的FileFilter,也许你可以重复使用抽象。

1

如果您使用的是Java 7,则可以创建虚拟文件系统。 (假设你正在使用)

您可以创建可被嘲笑为所有的文件处理操作的接口,但很可能要简单得多创建测试文件,并测试这些(并在完成后删除它们)

+1

你能发布一个链接到Java 7上下文中的“虚拟”文件系统的实现吗? –

+0

@DavidSoroko我开始了,但实现了一些很多方法。 ;) –

+0

然后,有:http://docs.oracle.com/javase/7/docs/technotes/guides/io/fsp/zipfilesystemprovider.html –

相关问题