Как настроить основной проект Xunit dotnet для инициализации из другой конфигурации (Dev, Test, Staging) - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть REST API, который я хочу сделать Интеграционные тесты (не модульный тест), используя dotnet core 2.0.

Цель состоит в том, чтобы иметь возможность запускать эти интеграционные тесты локально, указывая на локальную среду разработки, а также с заданной тестовой средой, которую я планирую передать из параметров Teamcity.

Я наткнулся на эту публикацию , описывающую, как использовать конфигурацию в ядре ASP.NET. Я ищу что-то подобное для проектов Xunit.

В мире .NET Framework я справился с этим, имея отдельный файл json для сред и добавив файл Settings.settings , чтобы добавить переменную для среды тестирования и передать значение среды перед запуском тестов. Однако в проектах xunit 2.0 для ядра dotnet этот параметр файла Settings.settings не отображается. Любые предложения, как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Я не уверен, какой механизм / конвейер CI / CD вы используете для своих тестов.

Тем не менее, вы можете использовать переменные окружения для передачи конфигурации в ваши тесты xUnit. Например, если вы используете DevOps Azure, переменные среды могут предоставляться через конвейерные переменные. Я успешно сделал это с проектом .NET Core 2.1 в Azure DevOps, поэтому я знаю, что это работает. У меня были проблемы с тем, чтобы заставить это работать в более старых версиях .NET Core.

Например - в DevOps Azure вы бы указали это следующим образом

  • Создать переменную построения конвейера - например, 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 голосов
/ 30 апреля 2018

После того, как поигрался с различными опциями в проекте XUnit, наткнулся на опцию «Ресурсы», которая является той же, что мы привыкли называть «Settings.settings» в мире .NET.

См. Скриншот ниже. Resources for a project

Надеюсь, это поможет кому-то в будущем, если он застрянет, как я.

...