AppDomain.CurrentDomain.BaseDirectory运行测试后会发生变化吗?

时间:2013-11-04 09:03:53

标签: c# .net unit-testing mstest appdomain

在VS2012中,我有一堆(MS)单元测试,它使用不同的xml /文本文件,我存储在与测试文件类相同的文件夹中。

我使用File.OpenRead(AppDomain.CurrentDomain.BaseDirectory +“file”)打开这些文件

如果我只运行一次测试,它就可以正常读取文件。

如果我一次运行所有测试,BaseDirectory会返回一个不同的路径(在TestResults / Deploy / currentdatetime / Out中),显然无法找到那里的文件。

怎么办?

谢谢!

2 个答案:

答案 0 :(得分:0)

我们在VS 2017遇到了这个问题,但所有测试包括个别测试都是从TestResults文件夹运行的。我们的问题是log4net.config没有被复制到TestResults文件夹(即使Copy Always为true)。

我们的解决方案是从Solution Items文件夹中删除LocalTestRun.testrunco​​nfig文件(直接在解决方案下)。当我们这样做时,它开始使用\ bin \ debug \文件夹,并找到我们的log4net.config文件。

答案 1 :(得分:-1)

好吧没有让它工作,似乎谷歌认为它永远不会。

解决方法只是编辑路径,如:

    [ClassInitialize]
    public static void ClassInitialize(TestContext context)
    {
        string deployDir = AppDomain.CurrentDomain.BaseDirectory;
        string[] rows = deployDir.Split(new string[] { "TestResults" }, StringSplitOptions.None);
        string projectPath = rows[0].ToString();
        _path = projectPath + "newpath\\";
    }