2010-08-23 89 views
2

我使用VS 2008進行單元測試。即使我的代碼調用Assert.Fail不會失敗測試?

Assert.Fail("some message"); 

Test passess ??

甚至

Assert.IsTrue(false);這也通過測試。

這怎麼可能。我期待測試失敗。我想迫使它失敗。

請幫忙!

+4

也許你正在測試的代碼非常好,它不會失敗!我希望我知道如何編寫這樣的代碼,我一直在吹捧單元測試。 – 2010-08-23 12:38:48

+0

確保您正在執行Debug Build? – StuartLC 2010-08-23 12:38:48

+3

查克諾里斯在行動:) – 2010-08-23 12:39:27

回答

0

您是否使用.NET內置的Assert類?如果是這樣,我懷疑TRACE沒有定義。

+0

如何定義跟蹤。 – 2010-08-24 04:28:27

5

也許你在捕捉測試代碼中的異常。 Assert類使用異常來使測試失敗,所以如果你正在捕獲它,測試就會通過。

請粘貼以獲得更準確的答案。

+0

這也是我的猜測 - AssertFailedException FWIW – 2010-08-23 19:53:54

0

有時,當我點擊「運行測試」時,我已經看到測試引擎在發佈配置中構建,但是繼續對較早的Debug配置構建運行測試。我會在VS2008測試引擎中調用這個錯誤。無論如何,請嘗試清理您的調試和釋放文件夾並再次運行它。

0

如果不知道更多關於你在做什麼的事情,我不能確定,但​​聽起來你正在期待.NET類像NUnit類一樣工作 - 不能確定 - 但如果你是,那永遠不會工作。

.NET類只有在定義了Trace的情況下才起作用(查看Project Properties,單擊Build選項卡,然後單擊「Define TRACE constant」)。 - 但是對於單元測試來說這沒有什麼幫助 - 這些類不會拋出異常或者單元測試失敗......他們彈出消息框供訂閱「稍後調試」的口頭禪。

如果你想Assert.Fail失敗單元測試你需要一個單元測試框架,它提供了一個這樣做的類(和NUnit一樣)。請告訴我們您正在使用哪種測試框架(或者不使用?),如果您仍然遇到問題,我們可以幫助您多一點。