У меня есть набор тестов Specflow, которые я запускаю, и я пытаюсь записать результаты в файл после завершения каждого сценария, а затем снова пишу в конце всего тестового прогона. Если я запускаю тесты в режиме отладки, то этот код срабатывает после каждого сценария, но файл появляется в проводнике Windows только после завершения всех тестов (или я принудительно останавливаю тесты). Приведенный ниже код, который записывает в файл, находится в отдельном проекте тестового проекта Specflow.
Изначально я не сбрасывал и использовал это вместо StreamWriter:
using (var file = new FileInfo(filePath).AppendText())
Но это не сработало, поэтому после просмотра различных примеров в Интернете я добавил дополнительные Flush, Close, затем Process.Start, сменил на StreamWriter, и ни один из них не помог. Текущий код, который все еще не работает:
private string rootFolderPath = Directory.GetParent(@"..\..\..\..") +@"\";
public void WriteAllTestScenarioNames(List<ScenarioResult> results, string fileName, string directoryName)
{
results.Sort();
Directory.CreateDirectory(rootFolderPath + directoryName);
string filePath = rootFolderPath + directoryName + @"\" + fileName;
using (var file = new System.IO.StreamWriter(filePath))
{
file.WriteLine(DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString());
foreach (var scenarioResult in results)
{
file.WriteLine(scenarioResult.ToString());
}
file.Flush();//flush the file to ensure that it's written now
file.Close();//flush the file to ensure that it's written now
}
Process.Start(filePath); //flush the file to ensure that it's written now
}
В примере, который я пытаюсь использовать, в выходном файле есть только 3 строки, когда он наконец завершается, а даты создания, изменения и доступа в свойствах файла в проводнике Windows идентичны.
Я использую 64-разрядную версию Windows 7 Enterprise SP1 с .NET Framework 4.5.2.