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")]

и т.д. но никто не работал.

У кого-нибудь есть идея, что пошло не так и как это решить?

К вашему сведению: ссылка - Ref1, Ref2.

1 ответ

Предположим, что тестируемая вами сборка - "WindowsFormsApplication1", затем вам нужно добавить 2 атрибута InternalsVisibleTo:

[assembly: InternalsVisibleTo("WindowsFormsApplication1.Fakes")]
[assembly: InternalsVisibleTo("UnitTestProject2")]

MSDN:

Генератор кода Fakes будет генерировать типы прокладок и типы заглушек для типов, видимых для сгенерированной сборки Fakes. Чтобы сделать внутренние типы сборочной сборки видимой для Fakes и вашей тестовой сборки, добавьте атрибуты InternalsVisibleToAttribute в код сборочной сборки, который обеспечивает видимость сгенерированной сборки Fakes и тестовой сборки.

Другие вопросы по тегам