c# - 如何为接受 xml 文件路径作为参数的方法编写单元测试

标签 c# .net unit-testing typemock

我知道单元测试应该与任何依赖项隔离。我正在尝试使用 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/

相关文章:

c# - 使用 XamlRenderingBackgroundTask 呈现不在可视化树中的图像

c# - 从子类中替换父类

c# - Entity Framework 代码优先 - 将两个字段联合到一个集合中

c# - 当结构不匹配时,在 C# 中组合两个对象列表

c# - 如何使用linq C#展平列表

angular - 如何使用 Jasmine 对 Promise catch 进行单元测试

c# - 序列化 EF 实体;禁用代理创建和延迟加载?

c# - 您如何在 .NET 的算法代码中断言?

c# - Visual Studio 单元测试 Assert.AreEqual 因预期值和实际值相同而失败

java - JUnit - 断言相同