2016-09-07 44 views
1

我有一套Specflow測試,我正在運行,並且我試圖在每個方案完成後將結果寫到文件中,然後我在整個測試運行結束時重新寫入。如果我在調試模式下運行測試,那麼在每個場景之後都會觸發此代碼,但是在所有測試完成後(或者強制停止測試),文件纔會出現在Windows資源管理器中。 下面的代碼寫入文件位於Specflow測試項目的單獨項目中。C#文件沒有被寫入,直到應用程序結束運行

我本來不沖水和到位的StreamWriter的有這樣:

using (var file = new FileInfo(filePath).AppendText()) 

但我增加了額外的沖洗,關閉,然後再處理互聯網上查找各種例子後不能正常工作,所以。開始,更改爲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個在輸出文件中的行,當它終於完成,並在文件屬性的創建,修改和訪問的日期在Windows資源管理器中是相同的

我使用Windows 7 SP1企業64位用的.NET Framework 4.5.2

+0

可能,我忘了提到,編寫文件的類與Specflow測試項目在不同的項目/程序集中。 – Steve

回答

0

看來,該文件正在寫的,問題是,它並沒有顯示在Windows資源管理器了。 我在調試模式下再次穿過,在資源管理器中檢查,文件不在那裏。我從變量的值中複製了文件路徑,並在Notepad ++中打開了確切的路徑,並且文件在那裏。之後,文件現在顯示在資源管理器中,並在每個測試方案結束後更新。

編輯: 看來,這個問題是

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

在每個場景後返回不同的結果這是什麼試運行後。一個在我的用戶文件夾的根目錄(正確)和Specflow項目文件夾上方的其他3個目錄。在第一個文件夾中,它只在最後輸出,但在第二個文件夾中,它在每個場景之後都進行更新。

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(); 

} 

還要檢查是否正確得到以及是否有權限在這方面寫形成的文件路徑 - 我懷疑它可能不會得到正確形成。

+0

我有權在文件夾中寫入,在測試過程中使用完全相同的文件名和文件夾,因爲它在最後。我發現這個問題似乎與Windows資源管理器沒有顯示該文件,但我可以使用確切的文件路徑在Notepad ++中打開它。現在,當我運行測試時,它似乎不再是一個問題,不知道爲什麼。 – Steve

相關問題