2011-09-22 300 views
0

非常基本的問題我有這樣一類 -單元測試

public class MyClass : ISomeInterface 
{ 
     public MyClass(string connString) 
     { 
      // set conn string on a private member 
     } 


     // interface methods 
     public CreateDb(string dbName) {...} 

     public DropDb(string dbName) {...} 

     public string GetLastError() {...} 
} 

它的遺留代碼的一部分,我必須寫單元測試。現在,如果我想爲此課程編寫測試,那麼我如何繼續進行,以覆蓋所有公開測試覆蓋率爲100%的公共方法? 任何人都可以提供一個小樣本w.r.t類嗎?

編輯 - CreateDb和DropDb捕獲SqlException並設置錯誤消息。錯誤消息是經由公共接口方法GetLastError函數暴露()

注:我使用RhinoMocks & MSTest的

+0

您需要提供CREATEDB的內容更多信息和DropDb方法,特別是關於類的依賴關係。 – Rickard

+0

100%聲明,分支或路徑覆蓋?你永遠無法衡量你的測試覆蓋範圍只是你的執行範圍。僅僅因爲代碼在測試期間執行並不意味着它已經過測試 –

+0

createDb和DropDb捕獲SqlException並設置錯誤消息。錯誤消息通過公共接口方法公開GetlastError() –

回答

0

有三種方法中的類。

你必須爲三種方法編寫單元測試。

對於

public <Returntype> MyClass(string ConString) 
{ 

} 

應該ATLEAST兩個單位測試。 1)當ConString爲空或空時,你的代碼執行什麼操作?如果它爲空或空,那麼你必須捕捉異常

2)當連接字符串是正確的,你將顯示的最後一條語句或確認是什麼。在RhinoMocks Link

+0

createDb和DropDb捕獲SqlException並設置錯誤消息。錯誤消息通過公共接口方法GetlastError()公開 –

0

假設你的類

更多信息產生了一些真正的數據庫,你有兩個選擇測試這個類:

  1. 讓類創建併發布實時數據庫,並且測試聲明數據庫是按預期創建的。
  2. 使用DB Mock,並且測試聲明對模擬的調用是正確的。如果你想使用這個選項,你可以再次選擇:

    a。不要更改您的代碼並使用支持方法調用interecption的Mocking Framework,如TypeMock。 b。更改你的代碼,使其具有一個c'tor或屬性,它接受數據庫的接口(AkA Dependancy Injection),並使用RhinoMocks來模擬數據庫接口。

希望它能幫助,也許你可以給這個問題提供更多的細節,所以答案可能是更詳細的:-)