情況:我的一些集成測試類共享通用方法來設置數據庫中的場景,因此我提供了一個抽象基類。它也負責一個完整的數據清理,在結束後所有測試跑:每個測試類多個ClassCleanup屬性
public abstract class IntegrationTests
{
...
protected static void Cleanup() { ... }
}
我的繼承類必須調用基方法,以確保我的基地清理代碼運行:
[TestClass]
public class FooIntegrationTests : IntegrationTests
{
...
[ClassCleanup]
public static void FooCleanup()
{
...
Cleanup();
}
}
問題:據MSDN「[O]在一個類可以與[ClassCleanup]裝飾NLY一個方法屬性」所以我不能從基類裝飾Cleanup
方法,即使我做的方法將不會被弄調用。
問題:我想這
- 始終運行從基類的
Cleanup
方法,而不在繼承的類實現什麼,和解決 - 始終運行在自定義清理方法如果有的話,繼承測試類。
我不喜歡強制繼承測試類顯式調用基類,因爲我必須記得實現它。我更喜歡更優雅但簡單的(!)技術。有任何想法嗎?
注意:爲我的基地功能的單是由所有的測試類共享不起作用,因爲我對所有連接到同一個數據庫實例並行多個測試代理運行我的測試。
「ClassCleanup」屬性只能分配給靜態方法。 'virtual'和'override'關鍵字只能用於實例方法。 –
啊,對,我正在考慮通常的安裝/拆卸。道歉。 –
靜態方法/類打破了正常的繼承規則。所以不,我不確定除了從繼承類中調用Cleanup以外,你可以在這裏做很多事情。 –