我的C#类中的相对路径如何与NUnit 3.x一起使用?

ArK*_*rKi 4 c# nunit unit-testing relative-path

我有一个C#类,代码如下.

class Database
{
    private const string DatabaseFilepath = @"Settings\Database.xml";
    ...
    private void LoadDatabase()
    {
        XmlDocument databaseDocument = new XmlDocument();
        databaseDocument.Load(DatabaseFilepath);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在这个代码在编译时执行正常,并且能够从Database.xml文件中读取.但是,当我运行使用NUnit执行此代码的单元测试时,我得到以下异常.

结果消息:System.IO.DirectoryNotFoundException:找不到路径'C:\ Program Files(x86)\ Microsoft Visual Studio 14.0\Common7\IDE\Settings\Database.xml'的一部分.

现在,当我使用Visual Studio测试工具时,这非常好用.但是,在切换到NUnit时,它看起来像是在不同的工作目录中搜索.我怎么能改变这个?

注意:我发现了其他问题,询问如何在测试代码中使用相对路径.在我的例子中,我的相对路径是在我的代码中.

ArK*_*rKi 7

查理给出了一个很好的解释,为什么他们决定不改变当前目录.对于我的测试代码,我发现使用AppDomain.CurrentDomain.BaseDirectory它并将其与我的相对路径组合使用,Path.Combine(...)以便在NUnit 3.x中正常工作.