#.net #unit-testing #exception-handling #dynamic-assemblies
#.net #модульное тестирование #исключение #dynamic-assemblies
Вопрос:
Если я запускаю модульный тест (mstest) Я получаю исключение, если вызываю assembly.GetManifestResourceNames()
:
Вызываемый элемент не поддерживается в динамической сборке.
Это проблемный код:
Dim assembly As Assembly = Assembly.GetAssembly(Me.GetType())
Dim names = assembly.GetManifestResourceNames()
Но если я правильно понимаю документацию, это должно сработать, и только при использовании AssemblyBuilder.GetManifestResourceNames()
я должен получить это исключение.
Если я попытаюсь пройти через .СЕТЕВЫЕ источники Я получаю сообщение:
Для mscorlib.dll !Система.Отражение.Излучение.InternalAssemblyBuilder.GetManifestResourceNames()
Почему оно выдает это исключение? Я что-нибудь пропустил?
Я забыл упомянуть, что я использую Moq (с опцией mock.CallBase = True
) в тесте.
Комментарии:
1. Я нашел обходной путь: если я сделаю процедуру общей (статической в c #), где ‘assembly. Вызывается GetManifestResourceNames()’, оно работает.
2. Вы должны опубликовать это как ответ на вопрос, а затем принять его! 🙂
Ответ №1:
Я нашел обходной путь: если я сделаю процедуру общей (статической в c #), где ‘assembly.Вызывается GetManifestResourceNames()’, оно работает.
Комментарии:
1. Мне это тоже помогло, но было бы неплохо, если бы кто-нибудь мог объяснить, почему метод должен быть статичным.
Ответ №2:
Я не смог заставить это работать, просто используя static, но я нашел другое решение.
Моя настройка:
- Проект MVC (веб-сайт) (Ссылки 2)
- Логический проект (Ссылки 3)
- Библиотека содержимого (только файлы)
Мой веб-сайт вызвал метод в проекте logic, который пытался получить доступ к GetManifestResourceNames()
из библиотеки содержимого. Это привело к ошибке.
Затем я удалил ссылку на содержимое из проекта logic и добавил ее непосредственно на свой веб-сайт. Никаких других изменений, и теперь это сработало.