我尝试使用此简单测试来使用FileSystemWatcher类 但OnFileChanged事件未触发
[Test]
public void CanNotifyWhenFileChanged()
{
var watcher = new XMLWatcher(_path);
watcher.StartWatching();
AddXMLNodeTofile(_path);// change the file
bool c = watcher.IsFileChanged;
Assert.IsTrue(c);
}
这是我的方法
public void StartWatching()
{
var watcher = new FileSystemWatcher
{
Path =
Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location),
IncludeSubdirectories = false,
NotifyFilter = NotifyFilters.LastAccess |
NotifyFilters.LastWrite |
NotifyFilters.FileName |
NotifyFilters.DirectoryName,
Filter = FilePath
};
watcher.Changed += OnFileChanged;
watcher.EnableRaisingEvents = true;
}
答案 0 :(得分:3)
请注意,某些单元测试运行程序(NUnit,MSTest)会对文件进行卷影复制,即在执行之前将测试二进制文件复制到单独的位置。因此,_path和测试程序集所在的路径可能不一样。
还要确保_path和您正在观看的文件夹是相同的。
答案 1 :(得分:2)
您的测试可能在事件发生之前完成。我使用名为FluentAssertions的库来测试事件。