我正在使用Visual Studio 2010編寫C#項目,但想要使用NUnit進行單元測試。隱藏類 - 但無法進行單元測試
我對oop相當陌生,但是試圖儘可能地利用信息隱藏和暴露只需要最少的接口。這意味着我有一對完全在圖書館內部的類 - 它們可以處理一些內部狀態,而用戶只需要知道幾個提供界面的公共類。
這似乎儘可能地隱藏起來,爲用戶提供最小的接口。
但是,如果我想單元測試,我看不到一種方法來測試這些類。所以我的問題是什麼是最佳實踐?不得不純粹爲了單元測試而暴露他們似乎是一種恥辱......或者是否有更好的工具來工作?
在儘可能多的封裝和儘可能多的方法之間進行權衡以允許它們全部進行測試 - 在單元測試中最好測試內部工作並讓集成測試測試公衆接口?
-
我意識到,通常情況下,你只會擔心單元測試的公共接口,但在這種情況下,這將導致很多非常令人費解的測試 - 這肯定是更好地擁有一切打破分成小塊來測試?
謝謝,這似乎是一個良好的開始測試。不過,如果有人對封裝和可測試性之間的平衡有任何反饋,我會非常感興趣! – Mark
我的0.02美元:我有一個實用的方法來測試 - 如果它足夠複雜,它會受益於測試,我測試它,不管它是公共還是內部。如果稍後再更改它,我會更新/刪除測試 - 我已經多次更改/刪除公共類,因此我沒有看到該參數有效。國際海事組織(IMO),通過公共API測試所有內容不是單元測試(就像@Vorac在他的回答中正確指出的那樣),但將這個問題放在一邊,我更喜歡儘可能靠近UUT進行測試,以簡化設置代碼並避免產生誤報從其他一些組件被破壞。 –
謝謝您的確認。這是我的想法。 – Mark