2014-12-03 2 views
3

Я написал единичный тест, в котором используется файл testettings для развертывания некоторой ссылочной dll в папке OUT. Я выполняю свой модульный тест с помощью этой команды.Не удалось выполнить тесты модуля Mstest из командной строки

"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe" 
"/testcontainer:C:\Unittests\unit_test.dll" 
"/runconfig:C:\Unittests\unit_test_settings.testsettings" 
"/resultsfile:C:\Unittests\unit_test_results.trx" 

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

Ошибка инициализации объекта (ISupportInitialize.EndInit). Сателлитная сборка с именем «some_referenced_dll.resources.dll, PublicKeyToken =» для резервной культуры «en» либо не может быть найдена или не может быть загружена. Обычно это проблема с установкой. Пожалуйста, переустановите или отремонтируйте приложение.
System.Resources.MissingSatelliteAssemblyException: Спутник сборки назван ...

В попытке исправить это, я добавил some_referenced_dll.resouce.dll в качестве развертывания элемента в файле testsettings, но это не помогло ,

Я вижу, что библиотеки DLL копируются в папку OUT.

Также тесты проходят отлично с VS 2012 после добавления some_referenced_dll.dll в качестве ссылки на проект.

ДОПОЛНИТЕЛЬНО:

Есть тесты, которые используют некоторые другие библиотеки DLL, как refrence непосредственно (например ref_dll_2.dll) и прохождение. Этот файл ref_dll_2.dll также находится в папке OUT.

У меня возникла проблема с dll (some_referenced_dll.resouce.dll), на которую прямо не ссылается мой тест. Мой модульный тест вызывает какой-то dev-код, который inturn пытается инициализировать класс, который терпит неудачу.

Было бы целесообразно принудительно загрузить DLL? Есть ли способ сделать это?

ответ

2

ОК, поэтому я, наконец, исправил проблему. Документирование здесь для полноты.

Проблема заключалась в том, что мой модульный тест MSTEST не смог найти ресурсную/спутниковую сборку (some_referenced_dll.resources.dll) и, таким образом, выбрасывал исключение. Я использовал атрибут deploymentItem для развертывания dll (some_referenced_dll.dll), но не DLL ресурса. Решение состояло в том, чтобы использовать deployItem и развернуть dll ресурса (some_referenced_dll.resources.dll).

Bill Wang предоставил отличный ответ в этом thread, который помог решить проблему. Это было простое решение для действительно раздражающей проблемы.

Смежные вопросы