У меня есть решение с двумя проектами, один из которых является тестовым проектом. Оба проекта нацелены на dotnet core 2.2:
<TargetFramework>netcoreapp2.2</TargetFramework>
Я использую Visual Studio 2019 (версия 16.1.1). Когда я нажимаю «Запустить все» в проводнике тестов, он выводит это предупреждение в окне вывода:
[5/28/2019 10:25:40 PM Informational] ------ Run test started ------
[5/28/2019 10:25:40 PM Warning] Test run will use DLL(s) built for framework .NETCoreApp,Version=v1.0 and platform X64. Following DLL(s) do not match framework/platform settings.
MyApp.UnitTests.dll is built for Framework 2.2 and Platform AnyCPU.
Go to http://go.microsoft.com/fwlink/?LinkID=236877&clcid=0x409 for more details on managing these settings.
[5/28/2019 10:25:41 PM Informational] ========== Run test finished: 3 run (0:00:01.167997) ==========
Тесты выполняются и завершаются успешно. Но мне интересно, как избавиться от этого предупреждения.
Я добавил файл .runsettings со следующими настройками, но все равно вижу то же предупреждение.
<?xml version = "1.0" encoding = "utf-8"?>
<RunSettings>
<RunConfiguration>
<TargetFrameworkVersion>FrameworkCore10</TargetFrameworkVersion>
</RunConfiguration>
</RunSettings>
Изменение FrameworkCore10 на FrameworkCore22 (или netcoreapp2.2) приводит к большому исключению. Верхние несколько строк исключения:
[5/28/2019 10:41:30 PM Error] System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.VisualStudio.TestWindow.Controller.RequestConfiguration.GroupTestContainersConfigByFrameworkAndArchitecture(IEnumerable`1 testContainersConfig, IXPathNavigable runSetting)
at Microsoft.VisualStudio.TestWindow.Controller.TestRunConfiguration.<GetAllCriteriaQueues>d__64.MoveNext()
at Microsoft.VisualStudio.TestWindow.Controller.TestRunRequest.<CreateRequests>d__23.MoveNext()
at Microsoft.VisualStudio.TestWindow.Controller.Request.<RunRequests>d__95.MoveNext()
--- End of inner exception stack trace ---
Обратите внимание, что те же самые проекты прекрасно работают в Visual Studio 2017 без необходимости в каком-либо файле параметров запуска.
Пробовали ли вы обновлять пакеты NuGet тестового проекта? Microsoft.NET.Test.Sdk
и любая используемая вами среда тестирования добавляется в виде пакетов NuGet. Возможно проблема уже решена в более новой версии. Или вы можете сделать то, что делает сама команда .NET Core, и использовать xUnit.
@PanagiotisKanavos Все пакеты nuget в проекте находятся в последнем стабильном обновлении. Microsoft.NET.Test.Sdk находится на версии 16.1.0. MSTest.TestAdapter и MsTest.TestFramework находятся в версии 1.4.0. Я попробую dotnest test и отчитаюсь. Единственное, чего нельзя сказать, это то, что это проект приложения-функции Azure и обычный тестовый проект.
Прямо сейчас столкнулся с такой же проблемой. Все, что я смог найти в Интернете, это попытаться установить версию фреймворка в .runsettings на ".NETCoreApp,Version=v2.2". Но похоже, что vs все равно игнорирует эти настройки...
Тоже наблюдаю такую же проблему. Обновлено до последней версии VS2019, xunit v2.4.1 и Microsoft.NET.Test.Sdk v16.1.1.
Возможно, на этой машине не установлена 2.2-точечная сетевая структура.
Вот Связь, можно скачать фреймворк.
1.0 больше не поддерживается
вы можете сделать одну вещь: установить framework 1.0 и переустановить пакеты 1.0.
Это не ответ, а публикация, чтобы помочь другим приземлиться здесь.
Команда Visual Studio признала проблему и пытается ее исправить. Лучше всего следить за этим здесь:
У меня возникла проблема после обновления проекта netframework до netcore.
Использование VS Enterprise 16.3.8, очистка решения, а также удаление всех временных папок, таких как bin
и obj
, помогли мне запустить тесты в нужной версии сетевого ядра.
Редактировать:
В качестве побочного примечания у VS иногда возникают проблемы при смене целевой платформы. После его изменения удаление bin
/ obj
иногда может быть вашим последним спасением.
Я не могу воспроизвести это с VS 2019 и xUnit, ориентированными на Core 2.2 и 3.0. Вероятно, это проблема адаптера Visual Studio MSTest. Вы пытались запустить тесты с дотнет-тест? Если можно, значит проблема в тестовом адаптере VS или, по крайней мере, не в консольном тестировщике.