Как передать параметры времени выполнения тесту dotnet в командной строке? - PullRequest
1 голос
/ 06 апреля 2019

У меня есть набор модульных тестов в основном проекте .Net и с использованием файла runsettings. Я пытаюсь настроить Azure DevOps для автоматического тестирования моих развертываний. В рамках этого процесса мне нужно переопределить параметры из параметров запуска в командной строке.

У меня есть файл runsettings со следующим разделом:

  <TestRunParameters>
    <Parameter name="ApiUrl" value="https://myurl..." />
  </TestRunParameters>

У меня есть статический конструктор, который сохраняет TestContext следующим образом:

        [ClassInitialize]
        public static void TestClassInitialize(TestContext context)
        {
            TestContext = context;
        }

Я получаю настройки из TestContext следующим способом:

        protected string GetStringSetting(string settingName)
        {
            return TestContext.Properties[settingName] as string;
        }

Когда я запускаю тест с выбранным файлом runsettings, он получает TestContext, и я вижу, что запись ApiUrl успешно получена.

Теперь я хочу установить этот параметр из командной строки. Я использую команду как:

    dotnet test <myproject.csproj> --configuration Release -- ApiUrl=https://newurl

Я получаю сообщение об ошибке, в котором говорится, что в словаре отсутствует ключ «ApiUrl», указывающий, что параметр не был обработан. Читая документацию, я подумал, что, возможно, мне нужно полностью указать имя параметра с помощью TestRunParameters.ApiUrl. Это дает мне ошибку XML.

Из всего, что я прочитал, я думаю, что делаю это правильно и не могу понять, что не так. Я использую инструменты версии 2.1.503.

Может кто-нибудь подсказать, как сделать эту работу?

Ответы [ 2 ]

1 голос
/ 08 апреля 2019

Этого в настоящее время невозможно достичь. Проверьте эти закрытые проблемы на github:

Ваша единственная возможность здесь - создать еще один файл runsettings с новыми значениями и передать его в dotnet test с флагом --settings.

0 голосов
/ 30 мая 2019

Нельзя заменить TestRunParameters из командной строки при использовании задачи DotNetCoreCLI@2 или команды dotnet test, но вы можете создать временный файл .runsettings, который содержит действительное значение параметра как часть ваш сборочный конвейер в Azure Pipelines:

- powershell: |
   [xml]$doc = Get-Content Tests/Settings.runsettings
   $doc.RunSettings.TestRunParameters.ChildNodes.Item(0).value = 'https://newurl'
   $doc.Save("$(Build.SourcesDirectory)/Tests/UpdatedSettings.runsettings")
  displayName: 'Override TestRunParameters'

- task: DotNetCoreCLI@2
  displayName: 'Run Tests'
  inputs:
   command: test
   projects: 'Tests/Tests.csproj'
   arguments: '-s $(Build.SourcesDirectory)/Tests/UpdatedSettings.runsettings'

- powershell: |
   Remove-Item $(Build.SourcesDirectory)/Tests/UpdatedSettings.runsettings
  displayName: Remove temporary .runsettings file

Вы найдете полный файл YAML и пример тестового проекта на GitHub .

...