2013-12-17 60 views
0

我有兩個服務,既存儲數據到磁盤,並從那裏讀取它。 一個是使用SQL,另一個是基於純文件的。兩者都實現我的界面IDataStorage如何針對MS Test中的兩個不同接口實現運行一組單元測試?

上面的一層是一個門面類,它在將數據傳遞給IDataStorage實現之前對數據進行處理。

我有在Visual Studio中門面類的一組單元測試2012

問題是,當前存在

#define USE_SQL_STORAGE 

#define USE_FILE_STORAGE 
在第一行

的測試類,它決定哪個具體的IDataStorage實現被傳遞到facade類。 我總是通過更改定義的存儲來手動測試兩個實現。

有沒有一種方法可以自動執行此操作,並且兩種實現都針對同一組測試進行測試而不必保持兩次相同的測試

回答

0

自己找到了。

的解決方案是創建一個抽象基測試類:

[TestClass] 
public abstract class BaseTest 
{ 
public abstract IDataStorage GetService(); 


[TestInitialize] 
public virtual void Init() 
{ 
this.service = GetService(); 
} 
} 

然後有BAS類的兩個實現:

[TestClass] 
public SQLiteTest : BaseTest 
{ 
public override IDataStorage GetService() 
{ 
return new SQLiteStorage(); 
} 
} 

[TestClass] 
public FileTest : BaseTest 
{ 
public override IDataStorage GetService() 
{ 
return new FileStorage(); 
} 
} 

然後,兩個具體的實現將在列表中顯示測試用例但不是抽象基礎。

相關問題