2014-05-12 48 views

回答

3

我不知道有關該主題的標準參考。這裏是我會做的:

如果我只有一個測試要寫,或者如果我需要一個被測試的類的實例構造不同於我的測試套件中該類的任何其他實例,我會只是在測試中實例化它。爲什麼要讓它更復雜,你必須?如果我需要反覆使用同一個實例,我會把它放在一個夾具中。

我的確認爲只需構造給定測試用例所需的固定裝置是非常重要的,這樣就不會誤導讀者。這意味着要麼使用您的測試框架提供的任何範圍機制(例如,rspec context塊或全新的xUnit TestCase)僅在需要它的測試之前構建給定的燈具,或者將燈具的實例構造移動到測試中。爲了避免重複,您可以隨時編寫一個方法來構建一個實例,並根據需要從多個測試中調用它。

0

我傾向於避免把東西放在夾具內。 經過一段時間後,隨着夾具測試數量的增加,CUT狀態趨於失控。每個測試需要一個simialr,但不同的行爲可能或不能被添加到某些初始化/設置方法。
在夾具級別進行CUT會在測試之間創建一個共享狀態,這會導致由於運行順序而導致測試失敗 - 這是一個很難找到並修復的問題。

另一個可讀性問題發生在測試失敗時 - 人們往往忘記可能在另一種方法中發生的初始化。

有更好的方法來避免代碼重複 - 使用AutoMocking容器來創建具有假參數或Factory方法的對象,它們爲每個測試啓用不同的初始化(如果需要)並創建更易讀和可維護的測試。

相關問題