2016-03-04 90 views
1

我在.net迴歸測試中遇到了一個非常奇怪的問題。當我運行完整的測試套裝時,我有一種測試方法失敗,但是單獨運行時通過相同的測試方法。測試方法在測試套件中失敗,但單獨通過.net C#

背後有什麼可能的原因。我再次檢查了其他測試方法對其沒有影響。測試方法使用Web服務來獲取一些數據,我不知道爲什麼它在套件中運行時會得到不正確的數據。

有人曾經遇到類似的情況。

+1

有什麼消息測試失敗?您是否嘗試過調試測試? –

+3

這裏最可能的原因是,在這個特定測試之前運行的一些測試有副作用,會以某種方式影響您的失敗測試。 –

+0

@raderick我如何確保這不會發生。任何想法或建議:) –

回答

2

我在.net迴歸測試中遇到了一個很奇怪的問題。當我運行完整的測試套裝時,我有一種測試方法失敗,但是單獨運行時通過相同的測試方法。

我以前也遇到過類似的事情,通常具有做:

  1. 應用程序設置。 Web服務可能就是這種情況。請注意,您的測試在測試應用程序中運行,而不是在普通的'exe'應用程序中運行。
  2. 靜態變量/初始化。如果你有一個[testmethod]和一個​​3210,該類將被實例化一次,之後將調用所有的方法。如果你在班上使用狀態,事情可能會被打破。

在所有情況下,找出發生的最簡單的方法可能是在調用服務之前放置一個斷點。

0

我也遇到了同樣的問題,它不只是微軟框架獨家。我也在NUnit中看到過這個。對我而言(最常見的情況)是你在多次測試中訪問同一個項目,以至於它的狀態不像你作爲一個組運行時期望的那樣。開始時很難發現,但如果你在寫測試的時候想到任何測試應該能夠在任何時候運行,幾乎在任何情況下都應該是好的。

爲了幫助追查問題是什麼嘗試斷言你假設的狀態是事實(如Id == 1或Name == null或IsConnected == false),如果你能得到它在你開始之前就失敗了,你可以確定這與狀態有關。

0

你很可能有某種測試污染。檢查您創建的全局狀態,以確保在運行測試之前將其重置爲所需的狀態。

使用大量的日誌記錄來獲取它的來源:)

相關問題