2013-05-07 73 views
14

我嘗試儘可能多地使用TDD。當我這樣做的時候,我把所有與外面的通信都包裝在包裝類中。幾分鐘前,我爲靜態類Directory做了一個包裝,因此我可以測試其他代碼而不必與實際文件系統交談。單元測試包裝對象?

但是單元測試包裝本身呢?由於我使用TDD,因此我覺得我沒有爲它編寫測試。另一方面,這是一個包裝,沒有別的,所以我真的需要?

回答

11

我傾向於做同樣的事情,不用擔心單元測試封裝類,只要我滿意自己,他們包含最少量的代碼。如果,就像你的情況一樣,我正在調用Directory類的許多方法,我會創建一個包含我將用來確保我能夠測試儘可能測試我的系統。

只要您還在使用集成和/或驗收測試,也可以直接單元測試您的包裝類。如果你試圖直接測試Directory,那麼無論如何它都是一個集成測試。我會問自己,如果我從我的代碼中刪除與Directory類的交互,我是否會在某個級別進行自動測試,結果會失敗。

請記住,您通常不得不編寫包裝類的原因是因爲您要測試的代碼不是內在可測試的,並且是不能被嘲笑的依賴關係。創建包裝類允許這種行爲被嘲笑。

+2

只是想指出,你不應該_really_爭取100%的單元測試覆蓋率。你不能對你的系統=邊界代碼進行單元測試(正如上面所述,本質上是一個集成測試)。而且,你的包裝類應該儘可能的簡單和簡單,只不過是傳遞給被包裝的對象。 – 2013-05-09 05:27:22

+2

同意 - 只要所有期望的行爲都已經過測試,再加上儘可能多的邊緣案例,然後繼續爲覆蓋而編寫測試不會提供最大的附加價值 – levelnis 2013-05-09 07:11:03