2013-10-30 234 views
5

我有一個庫,它是相當大的,但只公開一個非常小的API,以方便使用和學習新的用戶。我想以這種方式來保存我的圖書館,但我也想確保儘可能多地使用單元測試覆蓋率,我希望能夠直接對所有課程進行單元測試,但只要我可以告訴我可以只有單元測試庫的公共API。鏢,單元測試私有方法

我當然可以編寫單元測試來全面測試公共方法,這將有效地間接測試所有底層的私有類,但是如果測試失敗,這可能意味着需要在私有代碼中進行大量挖掘才能找到在哪裏出了問題,而不是爲每個單獨的私人課程進行單元測試,因此當出現問題時立即就會發現哪裏出了問題,哪裏出了問題。

有一個設計模式,以幫助這一情況或進行單元測試的方式爲私人鏢類和方法來寫?

+0

我想通過每一個公開測試類沒有增加任何的下層專用類,這樣我可以通過暴露測試類直接測試,只是告訴用戶忽略anythign與開始擴大公開所有私有成員「測試」,但這看起來很髒 – 0xor1

+1

你可以將你的庫分成多個庫嗎?如果您將私人課程移到同一個應用程序中的單獨的庫中,那麼您可以將它們公開並測試它們。然後,您可以將它們導入當前的庫中,而不導出它們(因此,只要不自己導入其他庫,庫的用戶仍不能使用其他類)。 –

+0

如此簡單的天才! – 0xor1

回答

7

如果你移動你的私有類爲在同一應用程序獨立的庫,那麼你可以讓他們公開並進行測試。然後,您可以在當前庫中導入該庫並不導出它(因此,只要庫本身不導入其他庫,庫的用戶仍然無法使用其他類)。