System.Environment.CurrentDirectory返回错误的目录

时间:2017-12-12 19:35:42

标签: c# visual-studio

我已将NUnit测试项目添加到项目中以进行单元测试

我的主要项目是

C:\Users\myName\Desktop\0120-project\ProjectName\

单元测试项目位于:

C:\Users\myName\Desktop\0120-project\ProjectNameTest\

现在我正在调试一个单元测试:

[Test]
     public void ExportationTest()
     {
       var evan= System.Environment.CurrentDirectory;
         //...           
     }

evan的返回值为:

C:\Users\myName\AppData\Local\JetBrains\ReSharperPlatformVs12

怎么可能呢?!我甚至没有从那里启动项目。我正在使用visual studio 2013 environement。

4 个答案:

答案 0 :(得分:3)

来自文档:

  

Environment.CurrentDirectory属性

     

获取或设置当前工作的完全限定路径   。目录

看起来您正在使用ReSharper来启动测试,这可能会将工作目录设置为该位置。

答案 1 :(得分:1)

为了解决问题:

我找到了解决问题的解决方案:

   [Test]
         public void ExportationTest()
         {
       Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
           var evan= System.Environment.CurrentDirectory;
             //...           
         }

输出

C:\Users\myName\Desktop\0120-project\ProjectNameTest\

P.S:将适用于基于桌面的应用程序,不确定基于Web的应用程序,如asp.net

答案 2 :(得分:1)

Nunit有一个名为TestContext.CurrentContext.TestDirectory的属性,你应该在版本3发布后使用它。

答案 3 :(得分:0)

使用

Application.StartupPath

迷恋

Environment.CurrentDirectory