Исключение произошло при вызове исполнителя исполнителя://mstestadapter/v1 ': ссылка на объект не установлена ​​в экземпляр объекта

Мы используем Visual Studio 2012 и Team Foundation Server 2010 в нашем проекте. Поскольку мы используем Microsoft Fakes, мы могли бы не использовать начатые функции тестирования нашей Team Build 2010, я создал операцию сборки, которая вызывает VSTest.Console.exe, передавая тестовые сборки. Этот подход хорошо работает для нас. Однако после недавней регистрации мы получаем следующую ошибку при выполнении Vstest.console.exe

Ошибка: при вызове исполнителя исполнителя возникло исключение://mstestadapter/v1 ': ссылка на объект не установлена ​​в экземпляр объекта.

Я скопировал двоичные файлы на свой локальный компьютер и смог снова получить ошибку. Интересно, что мы запускаем сборку dev перед регистрацией, которая запускает тот же vstest.console.exe с теми же параметрами и работает правильно. У меня есть две папки на моей машине, для одного звонок работает нормально, а для других - нет. Скомпилированные сборки выглядят одинакового размера, и нет никаких оснований полагать.

Я попытался использовать Process Monitor, но не смог найти ничего очевидного, кроме того, что процесс возвращается с кодом выхода 1. Кто-нибудь знает об этой ошибке? Есть ли способ узнать больше информации из моего тестового прогона?

Привет,

Хамид

Ответ 1

Мы дошли до сути проблемы. Мы используем Entity Framework 5.0, и у нас также есть ситуация, когда некоторые из наших тестовых сборок нацелены на .Net 4.0, а некоторые - на .Net 4.5.

Когда мы пытаемся запустить тесты, чтобы сборки, предназначенные для разных версий .Net-структуры и использующие Entity Framework 5.0, выполнялись в том же процессе Test (vstest.console.exe), мы получаем эту ошибку.

Я думаю, что это связано с тем, как Entity Framework 5.0 поставляется с двумя версиями (net40 и net45). Когда в процессе загружается одна версия библиотеки, другая версия не может быть загружена, и это вызвало ошибку.

Ответ 2

Я имею ту же ошибку, указанную в теме, когда в AssemblyInfo проекта указан AssemblyAttribute:

[assembly: AssemblyCulture("en")]

Если этот attribute присутствует, прогон модульных тестов завершается с ошибкой. Если я удалю эту строку кода или я удалю язык en, запуск блока будет успешным.

Ответ 3

У меня было такое же сообщение об ошибке только с Visual Studio 2017, используя новый MSTest.Framework и MSTest.TestAdapter (чтобы иметь возможность для использования тестирования Live Unit). Оказалось, что я использовал несколько вариантов этих пакетов в своем решении. Консолидация их до последней версии решила проблему.

Ответ 4

Исключение произошло при вызове исполнителя исполнителя://mstestadapter/v2 '

У меня было несколько TestAdapter и TestFramework в моей папке BuildAgents, удалив версии v1.1.11, исправленная проблема:

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

Ответ 5

Это то, что сработало для меня: В Visual Studio, Test → Test Settings → Архитектура процессора по умолчанию → X64.

Хотя это может не решить все проблемы, надеюсь, что это поможет некоторым из вас там.

Ответ 6

Я попробовал все в Интернете, чтобы решить это исключение. Наконец, я решил эту проблему, установив обновление v4 для Visual Studio 2013 (которое я использую в настоящее время). Надеюсь, это поможет!

Ответ 7

Удаление app.config и packages.config, если существует, и переустановка инфраструктуры Entity через пакеты nuGet работает для меня.