Я пишу внутренний пакет nuget для своей компании, который позволит приложениям в нашем наборе общаться с определенными устройствами Bluetooth для определенных рабочих процессов.Довольно классная штука!
Но когда я начинал проект, я пытался воспользоваться возможностью запустить TDD, так как начинал с нуля.Мне не потребовалось много времени, чтобы осознать что-то странное для меня:
Интерфейсы, в которых классы в пространстве имен Windows.Devices
помечены как внутренние.
Я размышлял об этом в течение нескольких дней, но не могу не задать следующий вопрос: означает ли это, что кто-то, использующий bluetooth для Windows 8/10, не пишет НИКАКИХ тестов, где эти службы подвергаются насмешкам?Я должен обернуть / адаптировать каждый из этих классов, потому что их конструкция не тривиальна.Затем напишите интерфейс для обертки / адаптера, который по сути является лишь зеркалом интерфейса, который я мог бы использовать в своем уме ...
Вопросы:
- Aren 't интерфейсы должны быть общедоступными?
- Какую цель они служат, если они не имеют такой же доступности, как их реализации?
- Кто-нибудь пишет модульные тесты для кода, использующего эти библиотеки?
- Я что-то упустил, и есть способ издеваться над интерфейсами этих классов, несмотря на то, что они являются внутренними?