我知道单元测试应该与任何依赖项隔离。我正在尝试使用 Typemock 为应用程序编写单元测试。 Issue 是类中的一种方法,它接受几个 Xml 文件路径参数,然后在方法内创建一个 XMLDocument 对象,以在方法中的某处使用。
public bool ValidateXml(String aFilePath, String ruleXmlPath)
{
XmlDocument myValidatedXml = new XmlDocument();
try
{
myValidatedXml.Load(aFilePath);
}
catch
{
return false;
}
XmlDocument myRuleXml = new XmlDocument();
try
{
myRuleXml.Load(ruleXmlPath);
}
catch
{
return false;
}
MyClass myObject = new MyClass(myValidatedXml);
//Do something more with myObject.
XmlNodeList rules = myRuleXml.SelectNodes("//rule");
//Do something more with rules object.
return true;
}
如何在不指定物理位置的情况下为此编写单元测试? 注意:不幸的是,我不允许更改代码。
最佳答案
AB Kolan 的建议可以作为解决方法。您还可以在测试项目中有一组测试 XML 文件,并将这些文件的路径传递给测试中的测试方法。
但是,让我做一个一般性的说明,对文件系统的依赖应该与对数据库的依赖在同一个 fashoin 中隔离。在像你这样的情况下,我通常从流或字节数组加载 XML 文档,这些文档由某种 FileManager 提供:IFileManager。该文件管理器封装了文件系统操作。
关于c# - 如何为接受 xml 文件路径作为参数的方法编写单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10188123/