Тесты TFS не соответствуют настройкам фреймворка
Я пытаюсь переместить решение с TFS 2012 на TFS 2018 SP2RC2, но не могу правильно запустить модульные тесты. Все проекты были переориентированы на 4.7.1 и построены как платформа x86. У нас есть файл testsettings, который содержит только элементы развертывания. Я использую новую задачу VSTest Platform Installer (по указанию MS) и тестовую задачу VS. В начале теста я получаю следующее сообщение:
Test run will use DLL(s) built for framework .NETFramework,Version=v4.5 and platform X86. Following DLL(s) do not match framework/platform settings.
Таким образом, все тесты пропускаются, так как они нацелены на 4.7.1. Откуда эта настройка 4,5? Я не могу найти его нигде и не могу понять, как его изменить.
10 ответов
E сть /Framework:
параметр, который вы можете указать для VSTest.
В вашем случае вы должны указать /Framework:.NETFramework,Version=v4.7.1
Подробнее см. По адресу https://msdn.microsoft.com/en-us/library/jj155796.aspx?f=255&mspperror=-2147217396
Исправление, которое я нашел в Visual Studio, намного проще, чем я думал:
- Закройте все экземпляры VS
- Откройте папку проекта в проводнике Windows, найдите папку.vs, удалите ее.
- Перезапускаем VS, папка восстанавливается, тесты снова работают.
По-видимому, есть некоторые настройки, которые плагин NUnit прячет в этой папке, и они находятся в двоичном формате, поэтому вы не можете их редактировать. Это случилось со мной после того, как я обновился до NUnit3TestAdapter версии 3.17.
Для меня пропуск тестов в локальном запуске VS2022 был связан с файлом testsettings. Я удалил папку .vs моего проекта, затем выбрал «Тест» -> «Настроить параметры запуска» -> «Выбрать файл настроек автоматического определения запуска». После этого я могу отлаживать модульные тесты.
У меня были проблемы с запуском тестового проекта, разработанного на другой машине, где не было тестов, которые можно было бы запустить с помощью тестера MSTest. В дополнение к сообщению в вашем вопросе я также получил сообщения:
Убедитесь, что тестовый первооткрыватель и исполнители зарегистрированы и настройки версии платформы и фреймворка соответствуют требованиям, и повторите попытку
Тест теста завершен: 0 найдено
В моем случае я решил эту проблему, выгрузив и обновив файл.csproj, добавив следующий импорт непосредственно в корневой каталог. Project
тег.
<Import Project="..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.props')" />
Надеюсь, что этот ответ поможет вам сэкономить время.
Я получил эту ошибку с помощью Visual Studio 2019 с NUnit 3.12.0
:
В тестовом прогоне будут использованы библиотеки DLL, созданные для платформы.NETFramework,Version=v4.5 и платформы X86. Следующие DLL не соответствуют настройкам фреймворка / платформы. Project.UnitTests.dll построен для Framework 4.5.2 и платформы AnyCPU.
Установленный NUnit3TestAdapter 3.13.0
и тогда все начало работать. Не нужно было изменять версию Framework или настройки процессора.
TL; DR : если вы используете файл *.runsettings для своих тестовых проектов, попробуйте удалить узел TargetFrameworkVersion
У меня была аналогичная проблема, но с.Net Core
При тестовом запуске будут использоваться библиотеки DLL, созданные для платформы.NETFramework,Version=v4.0 и платформы X64. Следующие библиотеки DLL не соответствуют настройкам платформы / платформы. MyProject.Tests.dll создан для Framework .NETCoreApp,Version=v3.1 и Platform AnyCPU.
Оказывается, была еще одна проблема. Для других моих тестовых проектов.NET Framework я определил файл *.runsettings
И в этом файле у меня было
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Parameters used by tests at runtime -->
<TestRunParameters>
<Parameter name="ConnectionString" value="Data Source=localhost;Initial Catalog=MyDatabase;Integrated Security=True" />
</TestRunParameters>
<RunConfiguration>
<!-- Framework35 | [Framework40] | Framework45 | FrameworkCore10-->
<TargetFrameworkVersion>Framework40</TargetFrameworkVersion>
</RunConfiguration>
</RunSettings>
Поддерживаемые значения для TargerFrameworkVersions на основе https://docs.microsoft.com/en-us/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file?view=vs-2019:
FrameworkCore10 для источников.NET Core, FrameworkUap10 для источников на основе UWP, Framework45 для.NET Framework 4.5 и выше, Framework40 для.NET Framework 4.0 и Framework35 для.NET Framework 3.5.
Но для Core 3.1 FrameworkCore10 не работает!
Так что я удалил узел TargetFrameworkVersion полностью
Была та же проблема, что и у Билла, работавшего над устаревшим кодом в VS2019, больше ничего не работало. Я просто изменил настройки запуска, чтобы использовать автоматическое определение.
В меню перейдите в Test -> Configure Run Settings -> Auto Detect runsettings File.
У меня была такая же проблема в VS 2019 в устаревшем проекте.
Не помог ни перезапуск Visual Studio, ни сборка как Release, а затем перестройка как Debug, ни удаление папки .vs. Я сделал это и все еще не мог запускать тесты, каждый раз получая сообщение, похожее на OP, во время обнаружения теста. Я упоминаю их здесь для полноты картины.
Я удалил файл LocalTestRun.testrunconfig и файл *.vsmdi из обозревателя решений, очистил и пересобрал решение, и модульные тесты снова заработали.
Установленный NUnit3TestAdapter 3.13.0
Где вы это нашли? Я вижу 3.12.0 как самую последнюю версию
Я столкнулся с той же проблемой с тестовой задачей Visual Studio версии 2 в конвейере Azure Devops 2019 после того, как тестовый проект .csproj был обновлен с .NetFramework 4.6.1 до .NetCore 3.1.
Исправление для нас должно было быть более конкретным при указании тестовых файлов. По умолчанию**\*test*.dll
обнаружил несколько других сборок со словом «тест» в именах, которых не было до обновления. Использование явного**\<MyTestAssemblyName>.dll
исправил проблему.