您好我正在尝试测试配置文件更改失败,
我使用以下代码来执行此操作...
string path = _pathInvalidFormat.Substring(0, _pathInvalidFormat.LastIndexOf('\\'));
System.IO.File.Copy("TestInvalidXmlConfigurationFile.xml", _pathInvalidFormat, true);
FileSystemWatcher fileSystemWatcher = new FileSystemWatcher(path);
//catch the invalid file getting deleted
fileSystemWatcher.Deleted += new FileSystemEventHandler(fileSystemWatcher_Deleted);
//catch the temporary config file getting renamed
fileSystemWatcher.Renamed += new RenamedEventHandler(fileSystemWatcher_Renamed);
fileSystemWatcher.EnableRaisingEvents = true;
CreateConfig(_pathInvalidFormat);
System.Threading.Thread.Sleep(5000);
Assert.That(_oldFileDeleted);
Assert.That(_newFileCreated);
ResetConfig(_pathInvalidFormat);
但是我对System.Threading.Thread.Sleep(5000);
的使用感到不满意我尝试过使用fileSystemWatcher.WaitForChanged(WatcherChangeTypes.Deleted,5000);但似乎不能让它工作,因为它总是似乎达到超时。即使我看到Deleted事件被击中,它仍然不会返回。
或者是否有更好的方法让系统等待异步事件被触发?
由于
基兰
- 已编辑:
我使用createconfig(path)使用以下方法创建系统配置文件
private void ReadConfiguration(string path)
{
var configFileMap = new ExeConfigurationFileMap()
{
ExeConfigFilename = path,
};
// if we try to read bad formatted file let's
// 1. delete this file
// 2. call read configuration to form correct file
try
{
Config = System.Configuration.ConfigurationManager
.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);
}
catch (ConfigurationErrorsException)
{
// ok, there is bad format file, let delete it and create another one
// TODO: check security rights?
File.Delete(path);
ReadConfiguration(path);
}
}
希望这可以帮助我了解我的测试究竟要达到的目标。
答案 0 :(得分:0)
将所有代码放在一个函数中,并用线程异步执行它。
现在,您可以使用线程的手动重置事件,在文件被删除,重命名并检查无效路径错误后,在睡眠后执行更多代码。
以这种方式,代码执行不会被阻止。