2016-08-23 67 views
0

我正在嘗試使用C#中的Selenium Webdriver爲測試創建一個自定義結果文件。如何在失敗的測試中關閉結果文件?使用Webdriver,C#

我正在將結果寫入一個csv文件,並在最後關閉它。

問題是如果測試失敗並且沒有完成,文件永遠不會關閉,因此我不會得到結果。

我試過把file.Close();在拆解部分,但這不起作用,因爲在該上下文中不存在「文件」。我看不到一種方法來通過它。

我也嘗試在安裝程序中設置新的StreamWriter文件 - 這樣做很好,但沒有幫助在最後關閉它。

我已經在這裏搜索和一般的谷歌搜索。

下面是一個什麼樣的作品樣本 - 當它全部通過(所有在一個地方 - 在測試中的不同類)。

我希望能夠移動file.Close();到它將運行的位置,而不管它是否通過。

[TearDown] 
    public void TeardownTest() 
    { 
     try 
     { 
      driver.Quit(); 
     } 
     catch (Exception) 
     { 
      // Ignore errors if unable to close the browser 
     } 
     Assert.AreEqual("", verificationErrors.ToString()); 

    // file.Close(); 
    // this is where it doesn't work if I put it here 
    } 

    [Test] 
    public void TheTest() 
    {   
     System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\results\test.csv", true); 

     try 
     { 
      Assert.AreEqual("text", "text"); 
      file.WriteLine("{0},{1},{2}", "time", "test", "PASS"); 
     } 
     catch (AssertionException e) 
     { 
      verificationErrors.Append(e.Message); 
      file.WriteLine("{0},{1},{2}", "time", "test", "FAIL"); 
     } 

     //do next step 

     file.Close(); 
    } 
+1

嘗試宣告'file'作爲'class'水平大衆,所以,這將是可供 – Siva

+0

謝謝你的類的所有方法 - 這完美地工作! – Akcipitrokulo

回答

0

您並未處置該對象。嘗試using語句https://msdn.microsoft.com/en-GB/library/yh598w02.aspx

[Test] 
    public void TheTest() 
    {   
     using(System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\results\test.csv", true)) 
{ 

     try 
     { 
      Assert.AreEqual("text", "text"); 
      file.WriteLine("{0},{1},{2}", "time", "test", "PASS"); 
     } 
     catch (AssertionException e) 
     { 
      verificationErrors.Append(e.Message); 
      file.WriteLine("{0},{1},{2}", "time", "test", "FAIL"); 
     } 

     //do next step 

     } 
    } 
相關問題