讓單元測試方法說我有下面的類結構:使用了全局變量
private string GlobalVariable = "foo";
public void MainMethod()
{
string bar = Baz();
}
public string Baz()
{
return GlobalVariable + "qux";
}
我想進行使用不同的值GlobalVariable
上Baz()
單元測試。然而,由於GlobalVariable
只是在方法中調用,並沒有作爲參數傳遞給它,所以我不能在我的單元測試方法中設置它。
所以我考慮換個結構:
private string GlobalVariable = "foo";
public void MainMethod()
{
string bar = Baz(GlobalVariable);
}
public string Baz(string globalVar)
{
return globalVar + "qux";
}
這樣,現在我可以改變,以檢查不同的輸出在我的單元測試的參數值globalVar
。
但是,我的第一個結構更清潔,因爲我沒有不必要地將變量值作爲參數傳遞給方法。
有沒有辦法讓兩個世界的最好,而不必妨礙我的結構,以便運行單元測試?
不......這就是靜態類難以測試的原因。正如你所發現的那樣,全球狀態並不好。 –
等等..這是靜態的嗎?在你的例子中,什麼定義了「全局」? –
我想問的是如何/爲什麼你的'GlobalVariable'在真實世界中使用時會發生變化?如果不是,那麼你是否真的需要測試它?如果它確實發生了變化,那麼通過什麼機制和測試機制。 – Belogix