25 сентября 2023 г. (изменено: 25 сентября 2023 г.)
Канал: @cherkashindev
Как тестировать internal методы и классы в C# — InternalsVisibleToAttribute
Представьте, что вы разрабатываете библиотеку, которой будут пользоваться тысячи людей 😮. Чтобы убедиться в стабильности — нужно всё хорошенько покрыть тестами. Все мы любим инкапсуляцию, верно (я надеюсь)? Поэтому мы не разрешаем использовать всё подряд из нашей сборки, а с умом используем модификаторы доступа и позволяем использовать только public классы и методы.
В C#, есть 7 модификаторов доступа, основные:
private— доступ только внутри текущего классаprotected— доступ внутри текущего и дочерних классовpublic— классы и методы доступны где угодно, также из сборок, использующих текущуюinternal— публичный API, внутри текущей сборки. Какpublic, но нет доступа из сборок использующих текущую- остальные можно посмотреть тут
Но, C# — не JavaScript, и для тестов создаётся отдельная сборка, а internal методы в ней не доступны.
Чтобы тестировать internal функциональность, нужно использовать атрибут InternalsVisibleToAttribute, и в качестве параметра указать имя тестовой сборки. Тогда все internal методы и классы будут доступны для тестирования.
[assembly: InternalsVisibleToAttribute("YourProject.UnitTests")]