[英]Unit Testing Strategy - Verify State of private field
我有一個Windows服務,收到來自第三方服務的消息
每次收到消息時,它都會更新內存中的記錄(保存在List<MyObj>
)並定期廣播它們
我想測試List的狀態
我想出的選擇是
將List的可見性從private更改為protected。 然后創建一個Test-Specific子類,它具有公開屬性的公共屬性
將公共屬性添加到僅在調試模式下編譯的類。 即
#if (DEBUG) public IList<MyObj> TestProperty { get { return _myObj; } } #endif
哪種解決方案最好(或最不好)?
有沒有更好的辦法?
* 編輯 *
剛剛發現這篇文章提供了所有選項的徹底淡化
盡可能嘗試測試代碼的可見結果。 你說這個類定期廣播列表......好吧,如果你可以對廣播的發生方式添加額外的控制,你可以通過強制廣播來有效地測試列表的內容。 這是代碼的可見結果,所以理想情況下這就是你應該測試的內容。
我完全是為了測試內部有意義,但在這種情況下,聽起來你可能會走得太遠。
(另一種方法是制作內部屬性,並使用[InternalsVisibleTo]
。)
您有兩種選擇:
internal
屬性以顯示該字段,然后通過InternalsVisibleTo
屬性授予對測試程序集的訪問權限。 這樣,您可以保持封裝。 PrivateObject
在MSTest的或Mirror
在MbUnit的...)。 HTH。
托馬斯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.