gpt4 book ai didi

c# - 单元测试 void 方法

转载 作者:太空宇宙 更新时间:2023-11-03 17:40:32 26 4
gpt4 key购买 nike

我知道您可以通过检查其效果来对 void 方法进行单元测试。但是,查看此代码中的 loadConfigFile 方法:

    internal XmlDocument configData;

public ConfigFile()
{
configData = new XmlDocument();
}

/// <summary>
/// Load config file into memory
/// </summary>
/// <param name="filename">path and filename of config file</param>
public void loadConfigFile(string filename)
{
if(string.IsNullOrEmpty(filename))
throw new System.ArgumentException("You must specify a filename");

try
{
configData.Load(filename);
}
catch(Exception ex)
{
throw new Exception("Config file could not be loaded",ex);
}
}

它将配置文件加载到私有(private)字段中 - 需要保持私有(private),以便开发人员不会直接修改值。相反,修改将通过 setConfigValue 和 getConfigValue 方法完成(我认为这需要单独测试)。

鉴于此,我将如何测试 loadConfigFile 是否确实有效?因为我无法访问私有(private) configData 字段。

最佳答案

configData 在该类的其他地方使用?

如果,比方说,你有这样的方法

public string GetValue()
{
return configData.GetsomeDataFromThis;
}

那么我建议你做一个这样的测试:

public void ReadValueFromLoadedConfigData()
{
// Arrange.
const string ExpectedValue = "Whatever";

var sut = new ConfigFile();

sut.loadConfigFile(@"C:\PathToTheConfigFile");

// Act.
string actual = sut.GetConfigValue();

// Assert.
Assert.AreEqual(ExpectedValue, actual);
}

在您的测试中,尝试只测试公共(public)交互,因为深入到类中,必须读取私有(private)字段的值,这意味着您的类对测试不友好。

关于c# - 单元测试 void 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26887516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com