Тесты xUnit выполняются локально, но не в Azure DevOps

У меня есть тесты xUnit, которые отлично работают локально, но не запускаются в Azure DevOps. Тестируемая сборка представляет собой сборку .NET 5.0, как и тестовая сборка.

Изучая файл журнала из задачи VsTest, я вижу следующее

Тестовый запуск обнаружил библиотеки DLL, которые были созданы для различных версий платформы и платформы. Следующие библиотеки DLL не соответствуют текущим настройкам, такими как .NETFramework, платформа Version = v5.0 и платформа X86.

UnitTests.dll создан для Framework .NETCoreApp, Version = v5.0 и Platform AnyCPU.

Microsoft.TestPlatform.CommunicationUtilities.dll создан для Framework .NETStandard, Version = v2.0 и Platform AnyCPU.

Microsoft.TestPlatform.CoreUtilities.dll создан для Framework .NETStandard, Version = v2.0 и Platform AnyCPU.

Microsoft.TestPlatform.CrossPlatEngine.dll создан для Framework .NETStandard, Version = v2.0 и Platform AnyCPU.

Microsoft.TestPlatform.PlatformAbstractions.dll создан для Framework .NETCoreApp, Version = v2.1 и Platform AnyCPU.

Microsoft.TestPlatform.Utilities.dll создан для Framework .NETStandard, Version = v2.0 и Platform AnyCPU.

Microsoft.VisualStudio.TestPlatform.Common.dll создан для Framework .NETStandard, Version = v2.0 и Platform AnyCPU.

Microsoft.VisualStudio.TestPlatform.ObjectModel.dll создан для Framework .NETStandard, Version = v2.0 и Platform AnyCPU.

testhost.dll создан для Framework .NETCoreApp, Version = v2.1 и Platform AnyCPU.

xunit.runner.visualstudio.dotnetcore.testadapter.dll создан для Framework .NETCoreApp, Version = v2.1 и Platform AnyCPU.

Перейдите на страницу http://go.microsoft.com/fwlink/?LinkID=236877&clcid=0x409 для получения дополнительных сведений об управлении этими настройками.

Ссылка особо не помогает (возможно, содержание изменилось). Я попытался изменить это, используя аргументы командной строки в моей задаче сборки: / Framework: net50 / Platform: x64 (AnyCPU, похоже, не является допустимым вариантом).

... а также используя файл .runsettings (связанный в моей задаче сборки)

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <RunConfiguration>
    <TargetPlatform>x64</TargetPlatform>
    <TargetFrameworkVersion>net50</TargetFrameworkVersion>
  </RunConfiguration>
</RunSettings>

... а также путем ссылки на BuildPlatform для конвейера.

Независимо от любого из этих изменений, ошибки в файле журнала (а также текущие настройки, перечисленные в первом предложении) остаются прежними.


person Tim    schedule 27.01.2021    source источник


Ответы (1)


Тесты xUnit выполняются локально, но не в Azure DevOps

Согласно сообщению об ошибке:

Microsoft.TestPlatform.CommunicationUtilities.dll is built for Framework .NETStandard,Version=v2.0 and Platform AnyCPU

Похоже, вы используете старый SDK для своего тестового проекта.

Чтобы решить эту проблему, попробуйте использовать dot net test вместо тестовой задачи VS для проверки файла dll:

- task: DotNetCoreCLI@2

  displayName: Test

  inputs:

    command: test

    projects: '**/*[Tt]ests/*.csproj'

    arguments: '--configuration $(BuildConfiguration)'

  enabled: false
person Leo Liu-MSFT    schedule 28.01.2021
comment
Спасибо! Это сработало для меня. Пара дополнительных комментариев: 1) Мне удалось отключить отдельную задачу сборки для проекта модульного теста, поскольку задача dot net ищет и создает * .csproj, а не * .dll. 2) Я также изначально получил три отчета об испытаниях. Все показывали пас, но в целом задание не удавалось. Я изменил параметр проектов, чтобы иметь фактическое имя файла * .csproj (т.е. без подстановочных знаков имени файла), и это было решено. - person Tim; 30.01.2021