У меня есть набор тестов Specflow, которые я запускаю, и я пытаюсь до сих пор записывать результаты в файл после завершения каждого сценария, а затем я пишите снова в конце всего тестового прогона. Если я запускаю тесты в режиме отладки, тогда этот код попадает после каждого сценария, но файл появляется только в проводнике Windows после завершения всех тестов (или я заставляю тесты останавливаться). Код ниже, который записывает в файл, находится в отдельном проекте для проекта тестирования Specflow.Файл C# не записывается до тех пор, пока приложение не закончит работу
Я изначально не был промывка и имел это в месте StreamWriter:
using (var file = new FileInfo(filePath).AppendText())
Но это не работает, так что после отрываясь различными примерами в Интернете, я добавил дополнительный Flush, Закрыть, а затем процесс. Начать, изменить на StreamWriter, и никто из них не помог. Текущий код, который до сих пор не работает в:
private string rootFolderPath = Directory.GetParent(@"..\..\..\..") [email protected]"\";
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 строки в выходном файле, когда он, наконец, заканчивается, и создания, изменения и Accessed даты в свойствах файла в проводнике Windows идентичны.
Я использую для Windows 7 Enterprise SP1 64-разрядная версия с .NET Framework 4.5.2
Возможно, я забыл упомянуть, что класс, который записывает файл, находится в другом проекте/сборке для проекта тестирования Specflow. – Steve