2010-07-02 27 views
2

測試私有函數有誰知道如何在的Silverlight單元測試項目測試私人的功能呢? * _Accessor對象似乎並沒有在正常的單元測試項目中使用。單位在Silverlight

回答

6

你不能單元測試私人功能。你有3種選擇:

  1. 可以使這些功能「公開」進行測試和驗證,
  2. 你讓他們「內部」和大會文件中添加InternalsVisibleTo屬性。
  3. 您創建一個調用您的私有方法並測試這些方法的公共或內部方法。

單元測試通常用於測試類到外界的接口。不建議單元測試私有方法。

1

@sbenderli的答案是正確的。

但是,我有我保留私人方法內部只是爲了單元測試他們。製作一個內部方法就像是爲該組裝公開的。

相反,更好的方法是通過從被測試的類繼承並創建一個調用受保護方法的公共方法來使方法受保護並在測試程序集中創建一個虛擬類。現在您測試假類的公共方法。

+0

反射方法在Silverlight中不起作用:http://msdn.microsoft.com/en-us/library/stfy7tfc(VS.95).aspx,這就是_Accessor方法失敗的原因。我認爲mstest中的_Accessors在任何情況下都是有缺陷的想法... – OdeToCode 2010-07-03 18:27:37

+0

Thanks @OdeToCode。我會編輯我的答案。 – 2010-07-04 05:31:21

0

如果您真的需要測試私有方法,那麼您的架構在某種程度上被打破。

0

開源框架Impromptu-Interface能夠使用DLR公開私有成員。此功能的單元測試正在Silverlight上傳遞。