簡體   English   中英

Setter或構造函數注入與單元測試

[英]Setter or constructor injection with unit testing

我正在嘗試解決我的問題的最佳實踐。 我在一個類中有多個創建新對象的方法:

    public void ToBeTested()
    {
         ClassForExmaple classForExample = new ClassForExample();

         //Other logic.....
    }

    public void ToBeTested2()
    {
          ClassForExmaple2 classForExample2 = new ClassForExample2();

          //Other logic.....
    }

等等.....

我總共有大約5個這些對象,我打算在上面使用構造函數注入,但這似乎很混亂。 由於其中有一些我應該改用私有屬性,還是有其他方法?

我這樣做是為了能夠模擬出這些新呼叫。

您應該使用構造函數注入。 如果由於依賴關系過多而造成混亂,則應分拆代碼,以使所測試的類不會做太多事情。

對類的依賴過多表明您可能未遵循“ 單一職責原則”

也就是說,5個依賴關系(在某些情況下)可能很好。

在這種情況下,使用構造函數注入似乎很好,因為看起來每種類型的對象只有一個實例。 如果不是這種情況,則可以將工廠注入類的構造函數中,並允許其根據需要創建對象。

我會避免嘲笑私有財產; 如果您必須訴諸於此,通常意味着您在類中隱藏了可測試的代碼,這些代碼應該更好地暴露給測試框架。 公開要在外部設置的公共財產會更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM