在asp.net 5单元测试中加载配置文件

时间:2015-09-07 09:53:28

标签: asp.net-core xunit

目前,我从位于单元测试项目文件的子目录中的配置文件加载配置:

        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,这可能会因其他开发人员而异。 有没有办法用相对路径替换它?

3 个答案:

答案 0 :(得分:0)

Directory.GetCurrentDirectory()适用于命令行和visual studio xunit测试运行器^ _ ^。

答案 1 :(得分:0)

Directory.GetCurrentDirectory不起作用,因为它返回C:\\xxxxx\\xxxx\\xxxx\\bin\\Debug\\net451\\win7-x64的内容。这里不会有任何配置json文件!

答案 2 :(得分: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");