0

我使用NUnit的一個MSTest的項目類似如下(:這不應該的問題看評論戴夫福克納的回答注):內斷言IDE在拋出AssertionException時停止,而不是失敗測試。 (?MSTestExtensions罪魁禍首)

using Microsoft.VisualStudio.TestTools.UnitTesting; 
using MSTestExtensions; 
using Assert = NUnit.Framework.Assert; 
using Is = NUnit.Framework.Is; 

這已經很好工作我單元測試,但在我的集成測試中,我遇到了一些麻煩。我認爲這可能是由於MSTestExtensions,因爲我的單元測試沒有使用它。此外,如果我使用語句註釋掉MSTestExtensions,繼承該類的MSTestExtensionsTestFixture語句和[TestTransaction]屬性,我沒有這個問題。重新添加使用語句不會導致問題。添加[TestTransaction]屬性不會導致問題。一旦我從測試類的MSTestExtensionsTestFixture繼承,問題就呈現出來了。

基本上,問題是當我在一個會失敗的情況下執行下面的代碼(例如包含兩個部分的actualPartNumbers列表,而期望的列表只包含一個)時,AssertionException不會被MSTest處理。

Assert.That(actualPartNumbers, Is.EquivalentTo(expectedPartNumbers)); 

因此,IDE停在拋出的異常處,而不是通過測試。有時候這種情況不會發生,測試會正常進行。但在大多數情況下,IDE停在拋出的異常處。有任何想法嗎?

FYI: 我使用MSTestExtensions讓我在每次測試後做數據庫回滾([TestTransaction]屬性)。這與MbUnit的回滾功能類似。我用NUnit's重寫了MSTest的斷言,因爲我更喜歡流利的風格。最後,我使用MSTest,因爲我遇到NUnit問題。特別是與微軟Moles和conflicts with third party references that use log4net。我正在盡我所能設置單元/集成測試,以便能夠在任何一個框架中運行,以防切換。但是現在MSTest似乎是最簡單的,IDE中的集成非常好。

回答

1

難道這可能只是你用來啓動測試的關鍵組合的問題:ctrl + R,ctrl + T vs ctrl + R,T?

http://stevesmithblog.com/blog/run-mstest-without-breaking-on-exceptions-in-vs2010/

+0

按Ctrl + R,則T可以讓我運行測試就好了(一樣運行通過右鍵單擊在測試範圍內運行上測試的測試),當否則將停止在異常。 Cntrl + R + T確實停止在例外。但是,當我將測試項目設置爲啓動項目並按F5時,我也遇到了問題。我希望能夠一次運行所有測試,而不是一次一個。有沒有辦法做一個ctrl + R然後像整個測試套件的操作? – Matt 2010-10-12 13:53:29

+0

如果我沒有從MSTestExtensionFixture繼承,Ctrl + R + T也不會停止在異常處。所以這仍然看起來像一個MSTestExtension問題。 – Matt 2010-10-12 13:56:06

+0

此外,如果我註釋掉將Assert和Is對象映射到NUnit(並因此使用MSTest的Assert)的代碼,則將斷言更改爲Assert.Equals(1,2)並按Ctrl + R + T和F5,問題依然存在。所以使用NUnit聲明也不會出現問題,因爲它也會影響MSTest聲明。同樣,如果我不從MSTestExtension繼承,我沒有這個問題。 – Matt 2010-10-12 14:00:56

相關問題