[英]Mock System Environment Variable In C#
我想對創建/更新系統環境變量的函數進行單元測試。 那么如何在 C# 中使用 Nunit 測試上述函數呢?
將創建/更新環境變量的真實調用包裝在可以依賴注入到代碼中的類中。 您需要的兩個電話是:
string value = Environment.GetEnvironmentVariable("variableName")
Environment.SetEnvironmentVariable("variableName", "value");
后者總是以字符串作為值。
然后包裝類看起來像這樣:
class MyEnvironment
{
public string GetVariable(string variableName)
{
return Environment.GetEnvironmentVariable(variableName);
}
public void SetVariable(string variableName, string value)
{
Environment.SetEnvironmentVariable(variableName, value);
}
}
然后在您的測試套件中注入模擬創建/更新的模擬類。 這將測試您的代碼的邏輯。
模擬的類看起來像這樣:
class MockEnvironment
{
private Dictionary<string, string> _mockEnvironment;
public string GetVariable(string variableName)
{
return _mockEnvironment[variableName];
}
public void SetVariable(string variableName, string value)
{
// Check for entry not existing and add to dictionary
_mockEnviroment[variableName] = value;
}
}
您需要測試包裝類以確保它確實創建/更新系統環境變量,但您只需要執行一次。
就模擬環境變量而言,我無法回答,您必須為此編寫自己的Environment
類。
在訪問/設置環境變量的一般范圍內,您可以使用Environment.GetEnvironmentVariable
和Environment.SetEnvironmentVariable
。
例如,
Assert.IsEqual("test", Environment.GetEnvironmentVariable("test-var");
和設置,
Environment.SetEnvironmentVariable("test-var", "test");
我使用設置拆卸模型。
public class TestClass
{
private string variable;
[OneTimeSetUp]
public void OneTimeSetUp()
{
variable = Environment.GetEnvironmentVariable("VARIABLE");
}
[OneTimeTearDown]
public void OneTimeTearDown()
{
Environment.SetEnvironmentVariable("VARIABLE", variable);
}
[SetUp]
public void SetUp()
{
Environment.SetEnvironmentVariable("VARIABLE", null);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.