C# c中的单元测试FileWatcher#
我有一个类,它使用以下方法监视文件:C# c中的单元测试FileWatcher#,c#,unit-testing,C#,Unit Testing,我有一个类,它使用以下方法监视文件: public FileWatcher(List<string> dirsToWatch, string filter, OnChange onChange) { OnChangeEnt = onChange; foreach (var dir in dirsToWatch) { var watcher = new FileSystemWatcher(dir);
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);
}
}
publicfilewatcher(List dirsToWatch、字符串过滤器、OnChange OnChange)
{
onChange=onChange;
foreach(dirsToWatch中的var dir)
{
var-watcher=newfilesystemwatcher(dir);
watcher.Filter=过滤器;
watcher.Changed+=新文件系统EventHandler(onChange);
watcher.Created+=新文件系统EventHandler(onChange);
watcher.rename+=新重命名的EventHandler(OnChangeHandler);
watcher.NotifyFilter=NotifyFilters.LastWrite | NotifyFilters.LastAccess | NotifyFilters.FileName;
watcher.IncludeSubdirectories=true;
watcher.EnableRaisingEvents=true;
_watchers.Add(watcher);
}
}
我只是想知道如何对这个方法进行单元测试以获得100%的覆盖率。
任何帮助都将不胜感激。感谢您始终可以使用mock(如Typemock Isolator),它将被调用的方法与系统调用隔离开来,这样您就可以模拟它们的行为,并编写只针对方法中一个单独用例的测试。您也可以使用一些专门用于此测试的特殊目录,但您必须编写适当的初始化和拆卸脚本。您可以始终使用模拟(如Typemock)这将把被调用的方法与系统调用隔离开来,这样您就可以模拟它们的行为,并编写只针对方法中一个单独用例的测试。您也可以使用一些专门用于此测试的特殊目录,但您必须编写正确的初始化和拆卸脚本。
FileWatcher
取决于环境(本例中为文件系统)。涉及环境的事物不能进行单元测试。您可以:
的抽象功能通过一些接口,使FileSystemWatcher
依赖于该接口,并使用模拟接口对FileWatcher
进行单元测试。当您有一些使用依赖于环境的类的相对复杂的行为时,这是有意义的。你想验证这种行为FileWatcher
- 对您的应用程序进行验收测试。这将涉及到端到端测试,包括在真实文件系统中添加/删除/编辑文件,并验证应用程序是否根据需要对这些更改做出反应
的抽象功能通过一些接口,使FileSystemWatcher
依赖于该接口,并使用模拟接口对FileWatcher
进行单元测试。当您有一些使用依赖于环境的类的相对复杂的行为时,这是有意义的。你想验证这种行为FileWatcher
- 对您的应用程序进行验收测试。这将涉及到端到端测试,包括在真实文件系统中添加/删除/编辑文件,并验证应用程序是否根据需要对这些更改做出反应