關於this question我剛纔問,我再一次被我的單元測試困住了。我應該訪問單元測試的受保護方法嗎?
我目前的問題是關於測試我的抽象Component
類的protected
方法。
我已經成功實現了一個名爲ConcreteComponent
的模擬類,它很好地繼承了抽象類的所有工作。
事情是,我做我的單元測試文件,這裏面具體的類。測試受保護方法的唯一方法是擁有一個專用訪問器。但是,我不能在單元測試所在的同一文件中創建一個專用訪問器,因此無法訪問受保護的方法。
我試圖將模擬具體類放在一個單獨的文件中,在不同的名稱空間下,現在允許我創建一個單元測試文件現在可以使用的專用訪問器。它很好地工作,但後來我覺得我需要這個模擬具體類在單元測試的同一個文件中。
所以現在我有兩個問題:
1)什麼是這個問題的可能的解決方法?
2)爲什麼我不能爲模擬類創建一個私有訪問器,它與單元測試類在同一個文件和名稱空間內?
「爲什麼你不能」是一個很好的問題。你爲什麼不能?究竟發生了什麼或阻止了你? – JRoughan 2013-03-04 11:46:31
以及VS2008不會允許我,無論出於何種原因。當類與單元測試位於同一個文件中時,當我右鍵單擊模擬類的名稱時,沒有選項可以創建一個專用訪問器。但是當我把模擬類放在一個單獨的文件中時,就會出現創建一個專用訪問器的選項。 – Anthony 2013-03-04 11:48:54
啊,所以它的IDE不讓你。沒有意識到你正在使用MSTEST和自動生成訪問器。在這種情況下,我會遵循下面的Saurabh的建議,並相信/確保公共接口正在執行受保護的代碼,或者如果不是,那麼爲什麼它會損壞? – JRoughan 2013-03-04 11:56:46