首页 文章

如何配置Xunit dotnet核心项目以从不同的配置初始化(开发,测试,分段)

提问于
浏览
0

我有一个REST api,我想使用dotnet core 2.0进行集成测试(不是单元测试) .

目的是能够在本地运行这些集成测试,指向本地开发环境,以及我计划从Teamcity参数传递的给定测试环境 .

我遇到了这个描述如何在ASP.NET核心中使用Configuration的post . 我正在为xunit项目寻找类似的东西 .

在.NET框架世界中,我通过为环境提供单独的json文件来管理它,并添加Settings.settings文件以为测试环境添加变量并在运行测试之前传递环境的值 . 但是在dotnet core xunit 2.0项目中,我没有看到这个Settings.settings文件选项 . 有什么建议怎么解决这个?

2 回答

  • 1

    我不确定您用于测试的机制/ CI / CD管道是什么 .

    也就是说,您可以使用环境变量将配置传递给xUnit测试 . 例如,如果使用Azure DevOps,则可以通过管道变量提供环境变量 . 我已经在Azure DevOps中成功完成了.NET Core 2.1项目,所以我知道这很有用 . 我在使用旧版本的.NET Core时遇到了问题 .

    例如 - 在Azure DevOps中,您将按照以下方式解决此问题

    • 创建一个Build管道变量 - 例如 ASPNETCORE_ENVIRONMENT

    • 创建Visual Studio测试任务以运行xUnit测试

    • 在xUnit项目中,只需使用System.Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")

    所有.NET核心配置类都可以通过 Microsoft.Extensions.Configuration Nuget包获得

    因此,虽然我没有尝试过,但您应该能够在测试项目中直接使用这些框架类来配置特定测试环境的参数 - 例如

    new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true)
            .AddEnvironmentVariables()
            .Build();
    

    上面显示的 .AddEnvironmentVariables() 也可以用作替代appsettings.json中的默认值

  • 0

    在XUnit项目中使用各种选项后,偶然发现了Resources选项,这与我们在.NET世界中称为Settings.settings的内容相同 .

    见下面的截图 .
    Resources for a project

    如果他们像我一样被困,希望这将有助于将来的某些人 .

相关问题