2012-07-31 112 views
0

我爲單元測試一個應用程序創建一個TestClass,我想要做的一件事是運行一個測試方法,檢查方法已經正確運行,將測試類中的類屬性存儲在基於結果的值中,然後在以後的方法中使用該值。測試類可以有屬性嗎?

我試過這樣做,發現只要編譯器從一種方法移動到另一種方法,我設置的所有屬性都擦乾淨。我已經檢查了斷點,並且在第一個方法結束時,該值在屬性中,然後在第二個方法的開始處,該屬性爲null。

看着這個,沒有人似乎在嘗試同樣的事情,所以有可能在方法之間共享一個值,或者我採取了錯誤的方法嗎?

在此先感謝。

+0

我假設你正在使用mstest? – 2012-07-31 16:42:52

+0

您可能需要一個靜態屬性 – jpm 2012-07-31 16:43:26

+0

您不能使用靜態類成員來存儲值嗎? – 2012-07-31 16:43:34

回答

5

您正在採取錯誤的做法。

根據定義,單元測試應該是完全自包含的和確定性的。他們不應該相互依賴。

您應該能夠將第一次單元測試的重複部分重構爲輔助方法,該方法可以由您的其他單元測試調用。這項工作將會進行兩次,但單元測試應該非常快,所以開銷應該非常小。

2

它不是編譯器 - 它是測試運行器,它將(可能)爲每個測試創建一個新實例。

測試通常應該是獨立的 - 即使你可以找到一種方法來使這個工作,我會避免這樣做。盡你所能設計你的方式。

1

無論您使用什麼樣的測試框架,這對我來說都是不好的練習。所有自動化測試(更不用說正式的單元測試)應該彼此獨立。一個靜態字段/屬性可能工作,但我會建議先重構你的測試。

相關問題