簡體   English   中英

C#中的模擬系統環境變量

[英]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.GetEnvironmentVariableEnvironment.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.

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