2012-12-13 40 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 –

相關問題