0

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

}
4

2 回答 2

3

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

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

于 2013-07-24T13:45:58.557 回答
2

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

于 2013-07-24T13:44:49.750 回答