2009-01-27 69 views
12

假設Visual Studio.NET 2008和MsTest用於運行單元測試。當系統基於服務容器並且依賴注入單元測試自然需要建立服務。使用基類進行單元測試設置和拆卸

應該將這些服務設置在所有單元測試從每個單元測試類派生的基類中。如果他們應該在基類中,是否有辦法讓TestInitializeClassInitialize方法被執行而不需要從派生類中調用它們,例如base.Initialise?

回答

8

MSTest框架將搜索標記爲Test*的方法的整個對象(所有基類)。就像你在單元測試類中聲明它們一樣,你不必顯式地調用它們。

+2

類*方法將始終標記爲靜態,因此不會從派生類中調用。 Test *方法將被調用,因爲它們是實例方法。 – sduplooy 2009-01-27 14:33:35

0

我更喜歡將Test*Class*標記爲實際單元測試類。如果您在基類中定義它們,則無法向其添加特定於測試的活動。相反,在你的基類中使用靜態和實例構造函數和終結器。

5

對於2008,您應該可以在基類上使用[TestInitialize],並且只要不在層次結構的某個位置添加另一個[TestInitialize],就應該調用它。你也可以用虛擬方法做事。