Недавно мне поставили задачу создать простую утилиту, позволяющую импортировать данные из файла специального формата в базу данных. Я реализовал консольное приложение с несколькими классами (класс программы работает с классом бизнес-логики, класс бизнес-логики, в свою очередь, работает с классом доступа к данным). Все работает нормально, но теперь я думаю о создании некоторых модульных тестов и рефакторинга приложения (я раньше не создавал настоящих модульных тестов, просто несколько интеграционных тестов давным-давно, поэтому я считаю, что это приложение идеальное поле для практики) .
Итак, вот проблема: класс доступа к данным сделан статическим, это не позволяет имитировать его и, как следствие, создавать настоящие модульные тесты. Чтобы исправить это, мне нужно создать интерфейс и реализовать его в классе доступа к данным. Также мне нужно будет добавить конструктор в класс бизнес-логики, который будет принимать параметр этого типа интерфейса. Это означает, что в конечном итоге я создам класс доступа к данным в методе приложения Main (), и что-то мне подсказывает, что это не лучший подход (действительно ли нормально, что точка входа должна знать о некоторых вещах, связанных с доступом к данным? Что, если цепочка намного длиннее или цепочек должно быть несколько?). Я знаю, что могу использовать какой-нибудь контейнер IoC, но я думаю, что это слишком простое приложение для использования контейнеров.
Спасибо!