2010-07-08 35 views
2

是否有任何理由將對象創建放入setUp()而不是在實例變量聲明中?Junit是否有任何理由不在聲明中創建對象?

我已經在書中看到了這種方式,但效果是一樣的,我不確定它是否出於最佳實踐原因,因爲早期版本的Junit沒有實例化每個對象測試(see here),或者它只是一種風格的東西。

+0

您如何編輯我的文章? – orbfish 2010-07-12 15:54:08

+0

http://stackoverflow.com/faq - 什麼是信譽? – 2010-07-13 12:28:34

+0

我已經讀過,但是我沒有讀得太遠。它在那裏與「打在鼻子裏的人」和「使用鬆散丟失」。 – orbfish 2010-07-14 19:28:41

回答

3

如果所討論對象的實例化不依賴於外部因素,那麼一次聲明和定義它是完全可以的。但是,它通常取決於其他因素(例如初始化singleton *),或者需要構造函數參數 - 其中一些參數甚至可能依賴於測試 - 或者其初始化需要多個步驟。然後你必須將實例化推遲到設置方法,甚至延遲到測試方法本身。

請注意,JUnit會創建一個新的測試類實例,因此無論如何都會爲每個測試方法執行創建其數據成員的新實例。所以如果你沒有上面提到的依賴關係,語義上在聲明或者設置方法中實例化成員之間沒有區別。

*這是單身人士不被喜歡的原因之一。但是,通常你仍然擁有它們,特別是在遺留代碼中。

+0

謝謝,這很有道理 – orbfish 2010-07-12 21:31:02

相關問題