Как настроить целевую платформу для VSTest 2015 для запуска модульного теста, созданного для использования .net 4.6.1?

Я пытаюсь настроить TeamCity для запуска моих модульных тестов с помощью VSTest.console.exe для Visual Studio 2015.

Единственные параметры, которые кажутся действительными для запуска теста (даже в файле .runsettings):

<!-- Framework35 | [Framework40] | Framework45 -->

Мой файл .runsettings выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!-- Configurations that affect the Test Framework -->
  <RunConfiguration>
    <MaxCpuCount>1</MaxCpuCount>
    <!-- Path relative to solution directory -->
    <ResultsDirectory>.\TestResults</ResultsDirectory>

    <!-- [x86] | x64  
      - You can also change it from menu Test, Test Settings, Default Processor Architecture -->
    <TargetPlatform>x86</TargetPlatform>

    <!-- Framework35 | [Framework40] | Framework45 -->
    <TargetFrameworkVersion>Framework45</TargetFrameworkVersion>

    <!-- Path to Test Adapters -->
    <TestAdaptersPaths>%SystemDrive%\Temp\foo;%SystemDrive%\Temp\bar</TestAdaptersPaths>
  </RunConfiguration>
</RunSettings>

Когда я устанавливаю его на Framework45, он говорит мне:

[19:17:33][Step 2/2] VSTest executable: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\VSTest.console.exe
[19:17:33][Step 2/2] Command line params: [[Y:\TeamCity\BuildAgent1\work\f1cf88fd0bf6555\Javelin.Identity.Tests\bin\x64\Integration\Javelin.Identity.Tests.dll] [/Settings:test.runsettings] [/Logger:trx] [/Platform:x86]]
[19:17:33][Step 2/2] Starting: C:\TeamCity\buildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.NUnitLauncher.exe #TeamCityImplicit
[19:17:33][Step 2/2] in directory: Y:\TeamCity\BuildAgent1\work\f1cf88fd0bf6555
[19:17:33][Step 2/2] JetBrains dotCover Console Runner 10.0.2. Build 104.0.20151218.125453
[19:17:33][Step 2/2] Copyright (c) 2009-2016 JetBrains s.r.o. All rights reserved.
[19:17:34][Step 2/2] [JetBrains dotCover] Coverage session started [3/1/2016 7:17:34 PM]
[19:17:38][Step 2/2] Microsoft (R) Test Execution Command Line Tool Version 14.0.24720.0
[19:17:38][Step 2/2] Copyright (c) Microsoft Corporation.  All rights reserved.
[19:17:38][Step 2/2] 
[19:17:39][Step 2/2] Starting test execution, please wait...
[19:17:39][Step 2/2] Test run will use DLL(s) built for framework Framework45 and platform X86. Following DLL(s) will not be part of run: 
[19:17:39][Step 2/2] Javelin.Identity.Tests.dll is built for Framework None and Platform X64.
[19:17:39][Step 2/2]  Go to http://go.microsoft.com/fwlink/?LinkID=236877&clcid=0x409 for more details on managing these settings.
[19:17:39][Step 2/2] Error: None of the provided test containers match the Platform Architecture and .Net Framework settings for the test run. Platform: X86  .Net Framework: Framework45. Go to http://go.microsoft.com/fwlink/?LinkID=330428 for more details on managing these settings.
[19:17:39][Step 2/2] 

Когда я устанавливаю его на Framework46, он говорит мне:

[Шаг 2/2] Ошибка: при загрузке настроек произошла ошибка. Ошибка: неверный параметр «RunConfiguration». Недопустимое значение «Framework46», указанное для «TargetFrameworkVersion».

Это вообще должно работать с 4.6.1?


person Daniel Corbett    schedule 02.03.2016    source источник
comment
Я обнаружил, что когда я запускаю vstest.console.exe с этим тестраннером из командной строки, возможно, проблема заключается в том, как он запускается из командного города.   -  person Daniel Corbett    schedule 02.03.2016


Ответы (2)


Вы можете задать для TargetFrameworkVersion в файле .RunSettings следующее значение:
.NETFramework, версия = v4.6.1

Я знаю, что это вводит в заблуждение, поскольку их документация находится здесь
Я обнаружил это, просмотрев справочную команду для vstest.console.exe

vstest.console.exe /?

Среди прочего это показано:

--Framework|/Framework:<Framework Version>
  Target .Net Framework version to be used for test execution.
  Valid values are ".NETFramework,Version=v4.5.1", ".NETCoreApp,Version=v1.0" etc.
  Other supported values are Framework35, Framework40, Framework45 and FrameworkCore10.

А затем я попытался использовать любое из этих значений, и это сработало. В моем случае это был .NET 4.5.2.

Пример файла .RunSettings выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!-- Configurations that affect the Test Framework -->
  <RunConfiguration>
    <!-- Path relative to solution directory -->
    <ResultsDirectory>.\TestResults</ResultsDirectory>

    <!-- [x86] | x64  
      - You can also change it from menu Test, Test Settings, Default Processor Architecture -->
    <TargetPlatform>x64</TargetPlatform>

    <!-- Framework35 | [Framework40] | Framework45 -->
    <TargetFrameworkVersion>.NETFramework,Version=v4.5.2</TargetFrameworkVersion>
  </RunConfiguration>

  <!-- Configurations for data collectors -->
  <DataCollectionRunSettings>
    <DataCollectors>


    </DataCollectors>
  </DataCollectionRunSettings>

  <!-- Adapter Specific sections -->

  <!-- MSTest adapter -->
  <MSTest>  
    <MapInconclusiveToFailed>True</MapInconclusiveToFailed>  
    <CaptureTraceOutput>false</CaptureTraceOutput>  
    <DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>  
    <DeploymentEnabled>False</DeploymentEnabled>  
    <AssemblyResolution>  
      <Directory path=".\bin" includeSubDirectories="false"/>  
    </AssemblyResolution>  
  </MSTest>  
</RunSettings>
person Michael    schedule 03.05.2018
comment
Не работает для меня. В VS2017 я получаю следующую ошибку в окне вывода тестов: [7/6/2018 9:48:38 AM Error] Не удалось настроить параметры для плагина runsettings «Конфигурация запуска VSTest», поскольку он выдал следующее исключение: «Произошла ошибка при загрузке настройки. Ошибка: неверные настройки «RunConfiguration». Недопустимое значение '.NETFramework,Version=v4.6.1' указано для 'TargetFrameworkVersion'..' Пожалуйста, свяжитесь с автором плагина. - person Ashar; 06.07.2018
comment
Надеюсь, с предоставленным файлом примера у вас больше не будет этой ошибки - person Michael; 20.07.2018

Это подтвержденная известная проблема в vstest.console. Вы можете попробовать обходной путь, предложенный в проблеме (указать фреймворк через файл настроек запуска и оставить значение параметра «Фреймворк» по умолчанию)

person Oleg Rybak    schedule 02.03.2016
comment
К сожалению, я пробовал этот обходной путь, и он не работал при запуске из TeamCity. Я добавил больше деталей к моему вопросу выше, чтобы отразить это. - person Daniel Corbett; 02.03.2016
comment
Вот почему вы всегда должны копировать соответствующие части ссылки и не публиковать ответ только по ссылке: сайт MS Connect устарел, и ответ теперь недоступен... - person thomasb; 31.05.2018