FileSystemWatcher不使用单元测试

时间:2013-07-24 13:40:08

标签: c# filesystemwatcher

我尝试使用此简单测试来使用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;

}

2 个答案:

答案 0 :(得分:3)

请注意,某些单元测试运行程序(NUnit,MSTest)会对文件进行卷影复制,即在执行之前将测试二进制文件复制到单独的位置。因此,_path和测试程序集所在的路径可能不一样。

还要确保_path和您正在观看的文件夹是相同的。

答案 1 :(得分:2)

您的测试可能在事件发生之前完成。我使用名为FluentAssertions的库来测试事件。