2016-12-17 50 views
-1

我剛剛開始接觸的webdriver/C#/ NUnit的,不知道爲什麼一通下面的代碼結果,而不是一個失敗:爲什麼圍繞一個Assert的try-catch讓測試通過?

IWebDriver driver = new FirefoxDriver(); 
driver.Navigate().GoToUrl("http://google.com"); 

try 
{ 
    Assert.AreEqual("Goooooogle", driver.Title); 
    Console.Write("Passed"); 
} 
catch (Exception e) 
{ 
    Console.Write(e);  
} 

也就是AssertionException和異常之間的區別?

+0

'Exception'是C#中所有異常的基類,但我想'AssertionException'是一個異常,因爲任何原因導致斷言失敗。 – Abion47

+0

...爲什麼不呢?如果您發現錯誤,就測試而言,*沒有任何問題*。 – jonrsharpe

回答

2

該測試只是通過,因爲你捕獲AssertException,不正確的Assert拋出。

完全刪除try-catch,所以它拋出的異常告訴測試運行器測試失敗。

您通常不希望在單元測試中使用try-catch。

0

大多數(.NET)單元測試框架假設測試是成功的,如果:

  • 沒有斷言失敗
  • 如果沒有異常被拋出。
+0

因此,如果拋出異常,大多數單元測試框架會說一切都很好?這根本不是真的。除非測試期望出現異常,否則該異常會冒泡並且無法通過測試。 – CodingYoshi

+0

@CodeYoshi我相當肯定這就是Dave Mertens的意思,而且由於語法差,這個問題還不清楚。 – Abion47

+0

那麼我的評論將幫助他的答案,如果這是他的意思。如果不是,它仍然會幫助OP。 – CodingYoshi