Запустите интеграционный тест в конвейере сборки с измененными настройками приложения - PullRequest
0 голосов
/ 03 апреля 2020

Я добавил проект интеграционного тестирования в свое решение, используя. NET Core 3.1 и xUnit. В этом тестовом проекте я также добавил appsettings. json со строкой соединения, которую следует использовать локально.

  "ConnectionStrings": {
    "DefaultConnection": "Data Source=(LocalDb)\\MSSQLLocalDb;Initial Catalog=MyApp_IntegrationTests;Integrated Security=True"
  }

Я также добавил следующее в свой конвейер сборки в Azure DevOps:

- task: DotNetCoreCLI@2
  displayName: 'Run integration tests'
  inputs:
    command: test
    projects: '**/*Tests.csproj'
    arguments: '--configuration $(buildConfiguration)'

Сбой, потому что Azure не поддерживает LocalDB. Это имеет смысл, но я не могу понять, как преобразовать наборы приложений. json используемый тестовым проектом в конвейере. Если я вставлю строку подключения Azure в appsettings. json и зафиксирую ее, она будет работать, как и ожидалось.

Есть предложения, как это исправить?

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Если вы хотите заменить LocalDB connectionString на Azure connectionstring в вашем конвейере. Вы можете использовать задачи подстановки переменных (например, Magi c Chunks extension), чтобы заменить connectionString в настройках приложения. json.

Сначала вам нужно установить переменную (например, MyConnectionString) в вашем конвейере для хранения значения Azure connectionstring.

Затем вы можете добавить Задача преобразования Config перед задачей Do tnet Test и обратиться к этой переменной, используя синтаксис $(MyConnectionString) в Задаче преобразования Config заменить LocalDB connectionString.

Вы можете посмотреть пример в этой теме .

Другой обходной путь - использовать агент собственного хоста для построения вашего конвейера. , Поскольку Azure агенты не могут взаимодействовать с вашей локальной базой данных, вы можете настроить самостоятельно размещенного агента на локальном компьютере. Ваш localDB доступен для собственного агента.

Надеюсь, что выше поможет!

1 голос
/ 03 апреля 2020

Вы можете запустить LocalDB на Azure DevOps выполнит следующий скрипт

- script: sqllocaldb start mssqllocaldb
...