讓我們假設我已經測試這個Java ClassA
依賴於難以實例ClassB
:單元測試最佳實踐:空構造函數還是模擬對象?
public class ClassA
{
public ClassA()
{
String configFile = "config_file.xml";
// I have to pass configFile to instantiate ClassB.
// And for example if configFile does not exists in the testing machine?
// Wouldn't it be easier to have an empty constructor for classB to test ClassA?
ClassB classB = new ClassB(configFile);
}
// ...
}
ClassB
:
class ClassB
{
ClassB(String configFile)
{
// Set up configs.
}
// ...
}
它是不好的做法,建立內部classB
一個空的構造僅測試目的? 或者爲此改寫一個簡化的模擬ClassB
更好嗎?
對於IoC和依賴注入來說,這看起來像是您的合適場景。這樣ClassA只會聲明它「需要」ClassB的一個實例,並且您的IoC容器將連接並構建所需的依賴關係。並且在你的單元測試的情況下,你可以配置一個ClassB的模擬實例來測試ClassA。 您是否聽說過IoC和DI? –
謝謝,我會看看他們。 – mt22