XMLDocument.Load()运行测试项目时不加载文件

时间:2016-11-22 18:43:30

标签: c#-4.0 nunit

我有一个验证XML文件的测试用例。 当使用VS2010和.Net 3.5框架时,下面的代码工作得很好,我能够加载XML文件。我的文件是位置是应用程序的源文件夹。

 XmlDocument doc = new XmlDocument();
        try
        {
            doc.Load("Terms_and_Conditions.xml");

            XmlNode node;

            XmlElement root = doc.DocumentElement;
            //Select and display the value of the element.
            node = root.SelectSingleNode(NodeSelection);

            return node.InnerText;
        }
        catch (Exception ex)
        {
            throw ex;
        }

解决方案文件夹: enter image description here

当我在.Net 4.6.1中运行相同的代码时,文件路径解析为      C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Terms_and_Conditions.xml

任何人都知道为什么会出现这个问题.Net 4.6.1

2 个答案:

答案 0 :(得分:1)

这是因为您的单元测试在测试运行器中运行,该测试运行器位于Common7文件夹中,而不在您的项目bin文件夹中。由于您指定了xml文件的相对路径,程序将在当前文件夹中查找该文件,即Common7文件夹。

答案 1 :(得分:0)

感谢大家的快速帮助。

以下是我用上述链接解决问题的方法。

XmlDocument doc = new XmlDocument();
try
{
    var path = System.IO.Directory.GetParent(System.IO.Directory.GetParent(TestContext.CurrentContext.TestDirectory).ToString());

    doc.Load("Terms_and_Conditions.xml");

    XmlNode node;

    XmlElement root = doc.DocumentElement;
    //Select and display the value of the element.
    node = root.SelectSingleNode(NodeSelection);

    return node.InnerText;
}
catch (Exception ex)
{
    throw ex;
}