Asp.net core 从appsettings.json获取数据不需要';在asp.net core 2中进行集成测试时不包含值

Asp.net core 从appsettings.json获取数据不需要';在asp.net core 2中进行集成测试时不包含值,asp.net-core,.net-core,integration-testing,xunit.net,appsettings,Asp.net Core,.net Core,Integration Testing,Xunit.net,Appsettings,我对新的.net核心框架中的集成测试有一个问题 我在appsettings.json配置中放置了一些自定义数据,并希望在某些类中使用它 "Data": { "FolderName": "Data", "Files": { "Json": "work.json", "Csv": "work.csv" } } 但当我使用IConfiguration接口获取类内的数据时-folderName变量为空 private void InitializeDataFileFullP

我对新的.net核心框架中的集成测试有一个问题

我在appsettings.json配置中放置了一些自定义数据,并希望在某些类中使用它

"Data": {
  "FolderName": "Data",
  "Files": {
    "Json": "work.json",
    "Csv": "work.csv"
  }
}
但当我使用IConfiguration接口获取类内的数据时-
folderName
变量为空

private void InitializeDataFileFullPath(IConfiguration configuration)
    {
        var root = Directory.GetCurrentDirectory();

        var folderName = configuration["Data:FolderName"];
        if (folderName == null)
        {
            throw new NullReferenceException("Folder name with data files isn't specified in appsettings.json");
        }
另外
root
变量显示的路径不正确-
”.IntegrationTests\bin\Debug\netcoreapp2.0“
,但我希望看到类似
\.WebApi\

我遵循手册。我还想做一些类似的事情,但是现在已经没有project.json文件了

附言

  • 若我在VisualStudio下运行这个项目—一切都很好
  • 我的fixture类与Microsoft手册中的完全相同。我认为所有这些操作都为我提供了一个至少在正确的目录中测试的项目
  • 谢谢你的建议

    (新增) 我这篇文章的主要内容是,从appsettings中获取的信息显示了集成测试和程序常见运行的不同值。我希望它是一样的

    • 使用Configuration.GetSection(“数据:FolderName”).Value.ToString()
    • Directory.GetCurrentDirectory()将返回运行.exe的文件夹

    您是否正在使用appsettings的开发版本

    默认情况下,ASP.NET核心项目附带两个appsettings.json

    Visual Studio 2017中的示例


    我最好的猜测是您有两个可执行文件:一个是您的web应用程序,另一个是您的集成测试项目。每个可执行文件都需要自己的
    appsettings.json
    :集成测试可执行文件无法从web应用程序项目中神奇地找到
    appsettings.json


    奇怪的是,如果您按照您提到的指南操作,那么
    GetProjectPath
    方法应该会找到创建配置对象的适当路径。

    您阅读了p.s。?我这篇文章的主要内容是,从appsettings中获取的信息显示了集成测试和程序常见运行的不同值。我需要它是相同的。它不是重复的,因为在新的.net核心项目中不再有project.json文件。“GetProjectPath方法应该找到创建配置对象的适当路径。”-找到了,但我不明白为什么appsettings没有被复制到测试目录中或刚刚找到。因为这篇文章中描述的所有内容都是为了更接近实际情况进行集成测试……也许这是一个bug。没有文件会自动复制到输出目录,但这样做很容易:右键单击文件,属性,复制到输出目录:始终。感谢您的建议,我将尝试。