VSTest: файл testsettings или runsettings с параметром ForcedLegacyMode, установленным в значение true, не поддерживаются адаптером MSTest V2. Тест недоступен

Как использовать .testsettings файл, запускающий модульные тесты через vstest.console.exe? Я создал пустое решение Visual Studio, создал пустой проект модульного теста, добавил файл Local.testsettings в качестве элемента решения.

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {

    }
}

введите описание изображения здесь

<?xml version="1.0" encoding="UTF-8"?>
<TestSettings name="Local" id="1109524d-9809-4423-b7fa-fad429ebfd8d" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
  <Description>These are default test settings for a local test run.</Description>
  <Deployment enabled="false" />
  <Execution hostProcessPlatform="MSIL">
    <TestTypeSpecific>
      <UnitTestRunConfig testTypeId="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b">
        <AssemblyResolution>
          <TestDirectory useLoadContext="true" />
        </AssemblyResolution>
      </UnitTestRunConfig>
    </TestTypeSpecific>
    <AgentRule name="LocalMachineDefaultRole">
    </AgentRule>
  </Execution>
  <Properties />
</TestSettings>

Все в порядке, когда я запускаю свои тесты с помощью следующей команды:

>> "[path to vstest]/vstest.console.exe" [path to project]\UnitTestProject1.dll

Команда ниже выдает ошибку.

"[path to vstest]/vstest.console.exe" [path to project]\UnitTestProject1.dll /Settings:[path to settings file]\Local.testsettings

Предупреждение: файл testsettings или runsettings с ForcedLegacyMode, установленным на true, не поддерживаются адаптером MSTest V2. Нет доступных тестов в [путь] \ UnitTestProject1.dll. Убедитесь, что средство обнаружения и исполнители тестов зарегистрированы, а настройки версии платформы и фреймворка соответствуют требованиям, и повторите попытку.

Кроме того, путь к тестовым адаптерам можно указать с помощью команды / TestAdapterPath. Пример / TestAdapterPath :.

Поэтому я добавил параметр /TestAdapterPath:[project path/bin/Debug]. Здесь находится Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll с первооткрывателем и исполнителем. Но я получил ту же ошибку без последнего предложения об указании тестового адаптера.

Мне было интересно, сможет ли кто-нибудь решить эту проблему.


person Joseph Katzman    schedule 10.04.2018    source источник


Ответы (2)


У меня была аналогичная проблема, и я решил ее следующим образом:

  1. Перейдите в Тест -> Настройки теста

  2. Снимите флажок с \..\..projectTestSettings.testsettings файла

  3. Снова запустите тесты

person Maheswari Ramalingam    schedule 01.11.2018
comment
Я сделал то же самое. Но после этого мой модульный тест вылетает до того, как он попадает в тестовый пример. - person apb_developer; 06.11.2018
comment
@apb_developer, вероятно, метод, представленный в ответе, полезен, но это было что-то еще, что привело к сбою tast, например, содержимое предоставленного файла. В моем случае я предоставил .runsettings файл и поэтому смог установить ForceLegacyMode (внутри раздела MSTest) в значение false. Конечно, мне пришлось проверять новый файл вместо предыдущего файла по умолчанию. - person Andrey K.; 06.04.2019
comment
это решение - person hyankov; 21.06.2019

Решение состоит в том, чтобы использовать Microsoft.VisualStudio.QualityTools.UnitTestFramework вместо Microsoft.VisualStudio.TestPlatform.TestFramework, который по умолчанию добавляется в проект модульного теста Visual Studio. Таким образом, вы можете удалить два пакета через NuGet. Вы должны удалить MSTest.TestAdapter и MSTest.TestFramework и установить Microsoft.VisualStudio.QualityTools.UnitTestFramework.Updated. После этих шагов будут обнаружены ваши модульные тесты.

Также вы можете прочитать следующую полезную статью о тестовой среде MSTest V2.

person Joseph Katzman    schedule 11.04.2018
comment
Ваш совет не содержится в цитируемой вами статье Microsoft. Откуда вы берете эту информацию? - person Dan Esparza; 29.08.2018
comment
@DanEsparza Это статья просто полезная информация и не содержит решения. - person Joseph Katzman; 29.08.2018