Microsoft подделывает внутренние классы Shim не генерируется
У меня есть приложение Windows Form (сборка с именем " WindowsFormsApplication1 "), и у меня есть проект модульного теста (сборка с именем " UnitTestProject2 ").
Я добавил атрибут InternalsVisibleTo в "WindowsFormsApplication1\AssemblyInfo.cs", например
[assembly: InternalsVisibleTo("UnitTestProject2")]
Для доступа к внутреннему классу из "WindowsFormsApplication1" в приложение модульного тестирования "UnitTestProject2" с помощью Microsoft Fakes(VS 2012 Ultimate).
Я могу получить доступ к внутреннему классу напрямую, используя пространство имен из проекта модульного теста. Но я не могу получить доступ к Fakes - Shims и Stubs для этого внутреннего класса. Я пробовал разные комбинации для атрибута InternalsVisibleTo:
[assembly: InternalsVisibleTo("UnitTestProject2.Fakes")],
[assembly: InternalsVisibleTo("UnitTestProject2.Tests")]
и т.д. но никто не работал.
У кого-нибудь есть идея, что пошло не так и как это решить?
1 ответ
Предположим, что тестируемая вами сборка - "WindowsFormsApplication1", затем вам нужно добавить 2 атрибута InternalsVisibleTo:
[assembly: InternalsVisibleTo("WindowsFormsApplication1.Fakes")]
[assembly: InternalsVisibleTo("UnitTestProject2")]
MSDN:
Генератор кода Fakes будет генерировать типы прокладок и типы заглушек для типов, видимых для сгенерированной сборки Fakes. Чтобы сделать внутренние типы сборочной сборки видимой для Fakes и вашей тестовой сборки, добавьте атрибуты InternalsVisibleToAttribute в код сборочной сборки, который обеспечивает видимость сгенерированной сборки Fakes и тестовой сборки.