2009-06-10 65 views

回答

4

我通常不會。如果您徹底測試了私有方法和內部類的公共方法,那麼您應該能夠測試私有功能的全部範圍而不用公開它。

0

您必須公開一種方法來調用它們,可能通過特定於測試的派生類。

30

私有方法:

如果你想測試非公共方法,它通常意味着你就錯了。

如果有要測試的功能,但不希望在您的課堂上公開,則代碼正試圖告訴您一些事情。你的班級可能有太多的責任。您應該認真考慮將私有功能提取到新類中,爲新類編寫測試,並讓舊類具有新類的私有實例。

內部類:

這一個是更有效,特別是如果你正在寫爲他人重用一個類庫。你可能有不是爲一般用途設計的類,而是你想爲其編寫單元測試。

對於這種情況,請看 InternalsVisibleToAttribute

+3

還值得注意的是,InternalsVisibleTo可用於公開僅由測試程序集使用的構造函數/方法,並將這些構造函數/方法隱藏在客戶代碼中。 – jlafay 2011-05-03 19:23:42

2

我處理這個問題的方式是我公開所有的方法。我知道這聽起來很糟糕,但請忍受一下。

使用IoC時,每個具有某種邏輯的類都有一個接口。因此,基本上,你對接口進行編碼,而不是實際的實現。你要做的是將所有的方法標記爲public,並且不會影響類的使用方式,除非它可以爲該類中的每個方法編寫單元測試。