Тесты 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, намного проще, чем я думал:

  1. Закройте все экземпляры VS
  2. Откройте папку проекта в проводнике Windows, найдите папку.vs, удалите ее.
  3. Перезапускаем 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исправил проблему.

Другие вопросы по тегам