Как заставить модульные тесты nUnit работать с Xamarin.Forms в Azure конвейерах? - PullRequest
1 голос
/ 30 января 2020

Я пытаюсь заставить юнит-тесты nUnit работать с Xamarin.Forms. Все отлично работает на моей машине, но когда я пу sh до Azure и он входит в конвейер сборки, я получаю следующую ошибку:

The current .NET SDK does not support targeting .NET Core 3.1. Either target .NET Core 2.2 or lower, or use a version of the .NET SDK that supports .NET Core 3.1 [/Users/runner/runners/2.164.6/work/1/s/TestProject1/TestProject1.csproj

Когда я удаляю проект модульного тестирования, сборка прошла успешно. Я думаю, что проблема связана с тем, что Xamarin.Forms использует. Net Standard, в то время как мой проект модульного тестирования использует. NET Core. Как мне с этим смириться? Будем весьма благодарны за советы или указатель на учебник, в котором рассматривается модульное тестирование с помощью Xamarin. Формы на Azure. Я действительно новичок в игре с devops, так что какой-то тренировочный трек был бы хорош.

Также, вот мой Azure файл конвейерного YAML:

    pool:
      vmImage: 'macOS 10.13'

    steps:
      # To manually select a Xamarin SDK version on the Hosted macOS agent, enable this script with the SDK version you want to target
      # https://go.microsoft.com/fwlink/?linkid=871629
      - script: sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh 5_4_1
        displayName: 'Select Xamarin SDK version'
        enabled: false

      - task: NuGetToolInstaller@0

      - task: NuGetCommand@2
        inputs:
          restoreSolution: '**/*.sln'

      - task: XamariniOS@2
        inputs:
          solutionFile: '**/*.sln'
          configuration: 'Release'
          buildForSimulator: true
          packageApp: false 

Спасибо!

1 Ответ

1 голос
/ 22 марта 2020

Как вы уже упоминали, проект модульного тестирования представляет собой. NET Core-проект и, следовательно, должен выполняться с. NET Core. В определении сборки YAML вы можете сделать это следующим образом:

- task: UseDotNet@2
  displayName: 'Install .NET Core SDK'
  inputs:
    version: 3.1.x
    performMultiLevelLookup: true

- task: DotNetCoreCLI@2
  displayName: Build Tests
  inputs:
    command: 'build'
    projects: '**\*Test.csproj'
    arguments: '--configuration Release'

- task: DotNetCoreCLI@2
  displayName: Run Tests
  inputs:
    command: 'test'
    projects: '**\*Test.csproj'
    arguments: '--configuration Release'

Вот пример полного определения конвейера сборки для создания приложения Xamarin Forms с модульными тестами:

trigger:
  branches:
    include:
    - '*'

pool:
  vmImage: 'windows-2019'

steps:
- task: NuGetToolInstaller@0
  displayName: Instal Nuget
  inputs:
    checkLatest: true

- task: NuGetCommand@2
  displayName: Restore Nuget Packages
  inputs:
    restoreSolution: '**/*.sln'

- task: UseDotNet@2
  displayName: 'Install .NET Core SDK'
  inputs:
    version: 3.1.x
    performMultiLevelLookup: true

- task: DotNetCoreCLI@2
  displayName: Build Tests
  inputs:
    command: 'build'
    projects: '**\*Test.csproj'
    arguments: '--configuration Release'

- task: DotNetCoreCLI@2
  displayName: Run Tests
  inputs:
    command: 'test'
    projects: '**\*Test.csproj'
    arguments: '--configuration Release'

- task: XamarinAndroid@1
  displayName: Build Android App
  inputs:
    projectFile: '**/*Android*.csproj'
    outputDirectory: '$(build.binariesDirectory)/Release'
    configuration: 'Release'

Угадайте ответ для combodev1 слишком поздний, но, возможно, он поможет кому-то еще, кто окажется здесь.

...