Подтвердить что ты не робот

Как протестировать внутреннюю библиотеку классов?

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

Например:

var result = Manager.Instance.Create(definition)

Это должен быть единственный доступ к библиотеке классов.

На основе параметра определения он использует разные под-классы для создания запрошенного экземпляра и соответственно устанавливает его свойства. Поэтому я хочу как-то заверить в тестах, что весь процесс создания работал нормально. Но так как я также не хочу выставлять очень маленькие внутренние свойства объекта результата, я не могу тестировать, используя этот метод открытого доступа, так как у меня нет никаких свойств для утверждения.

Я знаю, что вы не должны тестировать внутреннюю механику, и это, как правило, плохой дизайн, и я также читал эту статью, но, возможно, нет создать библиотеку плюс проект unit test и, возможно, впоследствии ограничить доступ к этому классу? с оберткой или чем-то?

4b9b3361

Ответ 1

В .NET можно использовать InternalsVisibleToAttribute в вашей библиотеке классов, чтобы ваши внутренние типы были видны в вашем проекте unit test.

Таким образом, вы можете сохранить свой класс внутренним и все еще использовать его из других сборок, которые вы предоставляете.

Вы используете его следующим образом:

[assembly:InternalsVisibleTo("NameOfYourUnitTestProject")]