MSTest + Multiple Framework Targets = грусть - PullRequest
0 голосов
/ 13 января 2020

У меня есть несколько проектов MSTest, которые должны быть нацелены как на netcoreapp1.1, так и на что-то более новое, например netcoreapp3.0

. Я пробовал большинство вещей, предложенных в:

https://www.meziantou.net/mstest-v2-testing-against-multiple-frameworks.htm

Как правильно выполнить модульное тестирование проекта. NET с несколькими целевыми структурами, учитывая различия в реализации среди целей?

https://developercommunity.visualstudio.com/content/problem/215235/test-container-not-found-when-trying-to-run-tests.html

Однако мои результаты всегда таковы:

  • dotnet test выполняет только цели netcoreapp3.0. Ни один из netcorapp1.1 или netcoreapp2.0 не обнаружен
  • VS2019 не запускает ноль тестовых целей, завершается с ошибкой:
StreamJsonRpc.RemoteInvocationException: The following TestContainer was not found 'C:\Projects\fact\collection\src\Fact.Extensions.Collection.Tests\bin\Debug\netcoreapp1.1\Fact.Extensions.Collection.Tests.dll'
   at StreamJsonRpc.JsonRpc.<InvokeCoreAsync>d__96`1.MoveNext()

1 Ответ

0 голосов
/ 13 января 2020

При написании этого вопроса я пришел к выводу, что новейшая версия Microsoft.NET.Test.Sdk (16.4.0 на момент написания этой статьи) может быть несовместима с предыдущими платформами. Я проверил эту теорию как:

  • Условно указав 15.3.0 для netcoreapp1.1 ItemGroup + PackageReference
  • Откат к 16.3.0 для одной из netcoreapp2.0 целей

После этого:

  • dotnet test находит почти все, но все еще не цель 16.3.0 + netcoreapp2.0. По-видимому, это исправлено дальнейшим отступлением до 16.2.0, поскольку Microsoft.TestPlafrom.TestHost 16.3.0 имеет требование netcoreapp2.1
  • VS2019 по-прежнему имеет жалобы, но может найти как 15.3.0, так и 16.3.0 Microsoft.NET.Test.Sdk упомянутых проектов

Это согласуется с выводами Bruno Garcia в ссылке для разработчиков. Я не рассматриваю откат решения так, как обходной путь. Я чувствую себя лучше об этом обходе путем использования условия для фильтрации по TargetFramework.

Что было бы весьма полезно, так это большее предупреждение от Visual Studio о том, что проблемы зависимости от версии действительно вызывают проблемы. dotnet test дает некоторую обратную связь в этой области, если вы посмотрите внимательно.

...