Введите исключение нагрузки при обнаружении тестов MSTest Framework - PullRequest
0 голосов
/ 31 октября 2018

Недавно, когда мы попытались запустить тест с MSTest от Jenkins, мы получили ошибку «TargetInvocationException». Сегодня я переключился с MSTest на VsTest.Console.exe и, хотя мне удалось получить более подробное сообщение об ошибке, проблема та же.

Я не смог найти никаких указаний в Google, что может вызвать это исключение. Если я правильно понимаю, то исключение исходит не от наших тестов, а от MSTest Framework.

TpTrace Warning: 0 : 10032, 3, 2018/10/31, 15:22:23.137, 54721019933, testhost.x86.exe, TestSettings will soon be deprecated for automated unit and functional testing scenarios. It is recommended that you use RunSettings. To learn more, see http://aka.ms/runsettings
    TpTrace Verbose: 0 : 10032, 3, 2018/10/31, 15:22:23.137, 54721020301, testhost.x86.exe, TestRequestHandler.SendData:  sending data from testhost: {"Version":2,"MessageType":"TestSession.Message","Payload":{"MessageLevel":1,"Message":"TestSettings will soon be deprecated for automated unit and functional testing scenarios. It is recommended that you use RunSettings. To learn more, see http://aka.ms/runsettings"}}
    TpTrace Error: 0 : 10032, 3, 2018/10/31, 15:22:23.256, 54721419216, testhost.x86.exe, TmiDiscoveryRequest: Error occured while discovering tests from source F:\Jenkins\Workspace\[...]\My.dll. System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeInitializationException: The type initializer for 'Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestExtensionInfo' threw an exception. ---> System.TypeLoadException: Could not load type 'Microsoft.VisualStudio.TestTools.Common.TestTypesXml' from assembly 'Microsoft.VisualStudio.QualityTools.Common, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
       at Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestExtensionInfo..cctor()
       --- End of inner exception stack trace ---
       at Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestExtensionInfo.GetExtensionNames(IWarningHandler warningHandler)
       at Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestTip.InitializeExtensions()
       at Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestTip..ctor(ITmi tmiInstance)
       --- End of inner exception stack trace ---
       at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
       at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
       at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark)
       at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
       at System.Activator.CreateInstance(Type type, Object[] args)
       at Microsoft.VisualStudio.TestTools.TestManagement.TipDelayLoader.LoadTip()
       at Microsoft.VisualStudio.TestTools.TestManagement.TipDelayLoader.GetTip()
       at Microsoft.VisualStudio.TestTools.TestManagement.Tmi.GetTipsFromTestTypeInfos(IList`1 infos)
       at Microsoft.VisualStudio.TestTools.TestManagement.Tmi.LoadTestsFromTipsHelper(IEnumerable`1 locations, ProjectData projectData)
       at Microsoft.VisualStudio.TestTools.TestManagement.Tmi.LoadTests(IEnumerable`1 locations, ProjectData projectData, TestConflictHandler vetoingHandler)
       at Microsoft.VisualStudio.TestTools.TestManagement.Tmi.LoadTests(String location, ProjectData projectData, TestConflictHandler vetoingHandler)
       at Microsoft.VisualStudio.TestTools.TestManagement.Tmi.LoadTests(String location, ProjectData projectData)
       at Microsoft.VisualStudio.TestPlatform.Extensions.TmiHelper.TmiDiscoveryRequest.DiscoverTests(String source, Tmi tmi)
       at Microsoft.VisualStudio.TestPlatform.Extensions.TmiHelper.TmiDiscoveryRequest.DiscoverTests(IEnumerable`1 sources, Tmi tmi)
TpTrace Information: 0 : 10032, 3, 2018/10/31, 15:22:23.257, 54721419815, testhost.x86.exe, TestDiscoveryManager.RunMessage: calling TestRunMessage(Warning, Exception has been thrown by the target of an invocation.) callback.
TpTrace Warning: 0 : 10032, 3, 2018/10/31, 15:22:23.257, 54721420131, testhost.x86.exe, Exception has been thrown by the target of an invocation.

Моя идея заключается в том, что эта ошибка возникла после обновления Visual Studio, но я не могу ее подтвердить. Мы используем Visual Studio Community 2017 15.8.8 на нашем компьютере Jenkins. Запуск тестов от VS не проблема. Также стоит упомянуть, что мы все еще используем TestSettings и в начале получаем следующее предупреждающее сообщение:

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.
SPManagerTests.dll is built for Framework 4.5.2 and Platform AnyCPU.

Но я обнаружил, что это не так уж важно.

Есть идеи, как перейти к решению?

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Для тех, кому требуется удаленная отладка и запуск тестов на целевом компьютере, выполнение приведенных ниже шагов обойдет эту ошибку:

  1. Удаление записи для записи для Microsoft.VisualStudio.TestTools.Common из KEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ Installer \ Assemblies \ Global

  2. запустите 'gacutil / u Microsoft.VisualStudio.TestTools.Common'

Шаг 1 необходим, чтобы разрешить его удаление из GAC. Установка VS Remote Tools 2017 добавляет dll-нарушитель к GAC, который представляет собой другую версию, которая была необходима для запуска тестов.

0 голосов
/ 05 ноября 2018

Сегодня я вернулся к проблеме и обнаружил следующее:

  • VsTest.Console.exe может выполнять тесты, если я не указал файл .testsettings
  • Когда я пытался перейти на .runsettings, я получил похожее сообщение об ошибке, которое я погуглил:
Method not found: 'Void Microsoft.VisualStudio.TestTools.Common.TestRunConfiguration.AddTestSettingsProperties(System.Collections.Generic.Dictionary`2<System.String,System.Object>)'.

Если вы столкнулись с той же проблемой, что и вы, просто удалите Visual Studio Remote Tools. Это решит обе проблемы. До тех пор я пытаюсь вновь открыть вопрос с MS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...