2012-06-05 23 views
0

我們有一個具有分離業務層的項目。這就像解決方案中分離項目中的許多服務(類)一樣。我們還使用ninject來管理依賴關係。 所有業務層次的項目都是內部的,它通過接口與「另一個世界」進行通信。 如果要創建一個包含測試的新項目,那麼它將不會看到內部類(但是我​​們可以做一個破解並在AsseblyInfo中聲明Internal to Public)。如何使用Ninject以正確的方式測試.net項目

我真正需要知道的是什麼neccessary測試:

  1. 我們只能通過生產接口創造一切的測試envirement和測試(有沒有«明確»DAL,我們使用LINQ2SQL ,但它可能被嘲笑) 這種方式看起來很不錯,因爲我們對BisLayer的內部結構和僅測試«合同»功能一無所知。但不好的一面是,該系統具有很多的選擇,設置和綁定,它似乎是不可能或相當困難,以檢查它的所有可能的變體

  2. 我們可以放置在同一個項目的測試或設置屬性,使內部存在看作是公開的,所以我們可以測試內部類。它很好,因爲我們可以測試幾乎所有東西,但是很難控制綁定,所以Ninject會這樣做,而且我們只會覆蓋我們在混凝土測試中需要的綁定。 也不清楚如何測試類實現相同的接口(和做類似的事情)。像我們有緩存的幾個實現,但是各實現了一套-重刑保持在不同的地方(MSSQL,鍵值分貝,ASP緩存等)的數據,所以每個實現實際測試將是相同

回答

2

正如你說你需要訪問這些類才能測試。因此,只能製作暴露於外部槽外接口的內部結構。

只寫出你的測試是針對暴露在外面的行爲,就像你稱之爲「另一個世界」。 首先編寫更通用的測試用例,然後根據需要進行詳細說明。因爲這將是一個持續的過程,與實際功能的開發/改變一起,您將能夠決定您實際需要多少細粒度場景。

而且看看Ninject嘲諷內核擴展https://github.com/ninject/ninject.mockingkernel

+0

感謝名單,我已經決定去類似的方式了。 –

相關問題