2009-09-09 40 views
1

我有這是使用Assembly.LoadFrom(...)語句,並返回從衛星裝配支持的區域性方法的方法,所以我怎麼能爲這種類型的方法編寫單元測試。TDD - 如何編寫測試用例,作爲Assembly.LoadFrom(...)

我所做的是,將該靜態方法/邏輯封裝爲在其他類中返回文化並使用它的實例方法。這是正確的方法嗎?

回答

1

這是情況嗎?

aMethod(whatToLoad) { 
      // other stuff 

      x = Assembly.LoadFrom(whatToLoad); 

      // code using x 
    } 

第一原則:我們的重點是測試amethod方法(),Assembly.LoadFrom的測試()是一個單獨的問題。當我們爲aMethod()構建測試時,我們不試圖測試它的依賴關係。

那麼我們需要什麼樣的測試?

  1. 我們傳遞了whatToLoad
  2. 我們正確存儲/使用的值返回值正確
  3. 我們正確處理來自Assembly.LoadFrom引發的錯誤或異常()

它如果測試可以提供模擬實現,則最簡單。然後我們可以通過檢查Mock是否收到預期值來測試1。測試2通過返回一個明確定義的值(或多個測試不同的有趣值)測試3通過生成選定的錯誤條件。

所以,你必須改變你的代碼是這樣的:

aMethod(loader, whatToLoad) { 
      // other code 

      x = loader.Load(whatToLoad); 

      // code using x 
    } 

也許加載一些其他的方式注入,但問題是,你現在可以指定不同的測試我設置了一個合適的loaoder。例如,第一次測試。

testLoader = new MockLoaderThatRembers(); 

tested.aMethod(testLoader, loadThis); 

assertEquals(testLoader.getLoader(), loadThis); 

所以,如果這是你正在做的事情那麼是的,我會說你啓用TDD。

相關問題