2016-09-07 2 views
1

У меня есть набор тестов 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

+0

Возможно, я забыл упомянуть, что класс, который записывает файл, находится в другом проекте/сборке для проекта тестирования Specflow. – Steve

ответ

0

кажется, что файл записывается, проблема в том, что она не отображались в проводнике Windows. Я снова перешагнул в режиме отладки, проверил в Проводнике, файла там не было. Я скопировал путь к файлу из значения переменной и открыл этот точный путь в Notepad ++, и файл был там. После этого файл теперь отображается в Проводнике и обновляется после завершения каждого тестового сценария.

Edit: кажется, что этот вопрос был

private string rootFolderPath = Directory.GetParent(@"..\..\..\..") [email protected]"\"; 

возвращался другой результат после каждого сценария к тому, что это было после испытания. Один из них был в корне моей папки пользователя (правильно) и других 3 каталогах над папкой проекта Specflow. В первой папке он выводится только в конце, но во втором он обновляется после каждого сценария.

0

Попробуйте это:

public void WriteAllTestScenarioNames(List<ScenarioResult> results, string fileName, string directoryName) 
{ 
    results.Sort(); 
    Directory.CreateDirectory(rootFolderPath + directoryName); 
    string filePath = rootFolderPath + directoryName + @"\" + fileName; 
    FileStream fs = new FileStream(filePath, FileMode.Append, FileAccess.Write); 
    using (System.IO.StreamWriter file = new System.IO.StreamWriter(fs)) 
    { 
     file.WriteLine(DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString()); 
     foreach (var scenarioResult in results) 
     { 
      file.WriteLine(scenarioResult.ToString()); 
     } 
    } 
    fs.Close(); 

} 

Также проверьте, если Filepath становится сформирован правильно и есть ли у вас разрешение на запись в этой области - я подозреваю, что это не может быть получение формируется должным образом.

+0

У меня есть разрешение на запись в папку, точно так же имя файла и папка используются во время тестов, как в конце. Я узнал, что проблема, похоже, связана с тем, что в Windows Explorer не отображается файл, но я могу открыть его в Notepad ++, используя точный путь к файлу. Теперь, похоже, это не проблема, когда я запускаю тесты, не знаю почему. – Steve

Смежные вопросы