2015-09-07 135 views
0

目前,我從裝載活在我的單元測試項目文件的子目錄配置文件配置:加載配置文件

 HostingEnvironment env = new HostingEnvironment(); 
     env.Initialize(@"C:\ProjectRoot\tests\MyProject.Tests", "UnitTesting"); 
     Startup startup = new Startup(env); 

     var cfg = startup.Configuration; 
     var cs = cfg.Get("ConnectionStrings:MyApp"); 
     Assert.NotNull(cs); 

這看起來醜陋,因爲它使用的赦免路徑C:\ProjectRoot\tests\MyProject.Tests ,其他開發者可能會有所不同。 有沒有辦法用相對路徑代替它?

回答

0

Directory.GetCurrentDirectory()在命令行和Visual Studio xunit測試亞軍^ _ ^的作品。

0

Directory.GetCurrentDirectory不起作用,因爲它返回的東西沿着C:\\xxxxx\\xxxx\\xxxx\\bin\\Debug\\net451\\win7-x64行這裏不會有任何配置json文件在這裏!

0

您可以通過添加幾行內容,以project.json包括在項目的生成輸出配置文件:

"buildOptions": { 
    "copyToOutput": { 
    "include": ["config.json"]  
    } 
} 

這樣,config.json將在同一文件夾作爲輸出二進制文件降落。 現在你可以做:

env.Initialize(Directory.GetCurrentDirectory(), "UnitTesting"); 

,甚至更好,參考Microsoft.Extensions.PlatformAbstractions及用途:

env.Initialize(Microsoft.Extensions.PlatformAbstractions.PlatformServices.Default.Application.ApplicationBasePath, "UnitTesting");