Ответ 1
Если ваша сборка подписана с сильным именем посмотрите на этот ответ.
В противном случае проверьте, что имя вашей тестовой сборки действительно является "MyTests.dll" (оно не должно совпадать с именем проекта, хотя оно будет по умолчанию).
Я вставляю строку:
[assembly: InternalsVisibleTo("MyTests")]
внутри моего тестируемого проекта (Properties/AssemblyInfo.cs
), где MyTests
- это имя проекта Unit Test. Но по какой-то причине я до сих пор не могу получить доступ к внутренним методам из проекта Unit Test.
Любые идеи о том, что я делаю неправильно?
Если ваша сборка подписана с сильным именем посмотрите на этот ответ.
В противном случае проверьте, что имя вашей тестовой сборки действительно является "MyTests.dll" (оно не должно совпадать с именем проекта, хотя оно будет по умолчанию).
Давайте немного разбить его, так как многие из нас испытали этот небольшой переполох в прошлом...
В сборке A есть ваш внутренний класс. В сборке B представлены ваши тесты оборудования.
Вы хотите предоставить внутренности сборки A видимость в сборке B.
Вам нужно поместить атрибут сборки InternalsVisibleTo внутри сборки A и предоставить доступ к сборке B.
Вам все еще нужен ваш тестовый проект для ссылки на ваш основной проект.
Это легко пропустить, и если у вас нет существующего тестового кода, это может выглядеть так, как InternalsVisibleTo не работает.
В моем случае я кодировал интерфейс. Поскольку интерфейсы могут определять только общедоступные свойства, внутренние свойства не присутствовали на интерфейсе.
Убедитесь, что вы не делаете то же, что и я!
Я изменил:
Assert.IsNotNull((exportFileManager)?.ThumbnailFileExporter);
To:
Assert.IsNotNull((exportFileManager as ExportFileManager)?.ThumbnailFileExporter);