Абстрагирование вызовов общих библиотечных методов в C#

Абстрагирование вызовов общих библиотечных методов в C#
Абстрагирование вызовов общих библиотечных методов в C# - sekc_photography @ Unsplash

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

  • ваши тесты становятся настолько медленными, что вы не можете запускать их так часто, как вам хотелось бы

  • вы не можете легко заставить исходный код ввода-вывода обращаться к определенным файлам и папкам с вашими тестовыми данными

Таким образом, единственная «лучшая практика» здесь — не придерживаться какого-то карго-культа, а написать тест, который нужно написать, независимо от того, является ли он модульным тестом в строгом смысле или нет.

Предположим, вы заметили одну из вышеперечисленных проблем, подход, описанный в вашем вопросе, в порядке, хотя детали могут различаться в зависимости от того, сколько методов ввода-вывода необходимо вызвать, зависят ли они друг от друга, просто ли они читают данные или создают данные и структуры папок. Если проблема заключается только в производительности, и вы можете свободно выбирать место хранения и не нуждаетесь в большом количестве сохраняемых тестовых данных, вы также можете рассмотреть возможность использования какой-либо файловой системы на основе Ram для тестирования.

Рекомендуем прочитать: Путь Тестивуса — Меньше догмы модульного тестирования — Больше кармы модульного тестирования

Рекомендую посмотреть эти видео для лучшего погружения в вопрос:

Прикрепленное видео 1 - Полиморфизм, виртуальные методы c -, virtual override c -, C - ОТ НОВИЧКА К ПРОФЕССИОНАЛУ, - 75

Прикрепленное видео 2 - Основы C -, Седьмой урок. Методы, часть первая


LetsCodeIt, 3 января 2023 г., 11:39