簡體   English   中英

在C#中進行單元測試FileWatcher

[英]Unit test FileWatcher in c#

我有一個使用以下方法監視文件的類:

public FileWatcher(List<string> dirsToWatch, string filter, OnChange onChange)
    {
        OnChangeEnt = onChange;

        foreach (var dir in dirsToWatch)
        {
            var watcher = new FileSystemWatcher(dir);
            watcher.Filter = filter;
            watcher.Changed += new FileSystemEventHandler(onChange);
            watcher.Created += new FileSystemEventHandler(onChange);
            watcher.Renamed += new RenamedEventHandler(OnChangeHandler);
            watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.LastAccess | NotifyFilters.FileName;
            watcher.IncludeSubdirectories = true;
            watcher.EnableRaisingEvents = true;
            _watchers.Add(watcher);
        }
    }

我只是想知道如何對該方法進行單元測試以獲取100%的覆蓋率。 任何幫助將不勝感激。謝謝

您可以始終使用模擬(例如Typemock Isolator),該模擬會將被調用的方法與系統調用隔離開來,因此您可以模擬它們的行為並編寫僅針對方法中一個單獨用例的測試。 您還可以使用一些僅用於此測試的特殊目錄,但是您將必須編寫適當的初始化和拆卸腳本。

FileWatcher取決於環境(在這種情況下為文件系統)。 涉及環境的事物不能進行單元測試。 您可以:

  • FileSystemWatcher通過某些接口的抽象功能,使FileWatcher依賴於該接口,以及用於對FileWatcher進行單元測試的模擬接口。 當您使用基於環境的類進行某些相對復雜的行為時,這才有意義。 您想驗證該行為。

  • 對您的應用程序進行驗收測試。 這將涉及端到端測試,即在真實文件系統中添加/刪除/編輯文件,並驗證您的應用程序是否根據需要對這些更改做出了反應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM