【发布时间】:2012-04-17 08:56:48
【问题描述】:
我知道单元测试应该与任何依赖项隔离开来。我正在尝试使用 Typemock 为应用程序编写单元测试。问题是类中的一个方法接受几个 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;
}
如何在不指定物理位置的情况下为此编写单元测试? 注意:很遗憾,我不允许更改代码。
【问题讨论】:
-
那么,如果您不允许更改代码 - 如果单元测试暴露了错误会发生什么?说真的 - 添加一个接受 XmlDocument 或流的重载并对其进行测试。然后重写当前实现以简单地委托给新方法。
-
@Cwan true,测试不允许更改的代码很奇怪
-
这也是我很生气的地方,但我不是老板。但我会尝试与他们推理,因为他们非常热衷于为他们的遗留应用程序编写单元测试。
-
@AzharKhorasany 我去过那里!我完全明白你的意思:)
标签: c# .net unit-testing typemock