2012-02-27 50 views
2

我正在開發自定義串行器作爲愛好項目,我想學習它的TDD。複雜測試 - 依賴於相同的測試數據

我有一個序列化測試&反序列化簡單對象圖。 現在我想用非平凡的反序列化(即沒有無參數構造函數的類,循環引用,大量對象等等)來測試一些複雜的圖。

我需要測試序列化的「構建」和「提取」圖形,並且需要測試已創建圖形的序列化反序列化。我想用幾個圖來測試所有四個動作(從簡單的複雜圖到超複雜的圖)。

我應該創建一些非Test類,爲所有測試提供預定義的圖表,或者每個測試都應該有自己的圖表來源?

我在問這個問題,因爲我看到可能的問題與一個clas(圖的提供者)上的依賴關係的幾個測試。

謝謝。

回答

2

這裏不一定有「正確」的答案;這取決於你的項目和你的測試。它似乎是一個好主意,有一個共同的圖表來源 - 不一定是一個類,但可能是一組類(即圖工廠/存儲庫),可以生成代表不同的概念圖(缺乏無參數構造函數,循環參考等)。

這並不能避免多次測試依賴於一個共同來源的風險,但您需要對定義每個圖的構造的成本進行權衡。你可能會在測試中得到很多重複的代碼。如果重新使用給定圖形定義有好處;圖工廠可能是前進的方向。

一個想法可能是對每個圖都進行元測試/一組元測試,以便確認圖的有效性。問題的關鍵在於,如果一組實際測試都使用相同的圖形,則突然失敗,請先查看元測試並確保它們通過。您正在計劃的測試應該集中在單一方面(構建/提取等),然後這些測試可以依賴圖的有效性。

關鍵是要保持每個測試儘可能簡單,以便如果/當它失敗時它的明顯缺陷 - 通過在其他地方建立圖形構建(並單獨驗證它),您可以將序列化測試集中在那和那一個。