Итак, для ведения журнала с SO и других сайтов в Интернете лучший ответ кажется:
void DoSomething() {
Logger.Log("Doing something!");
// Code...
}
В общем случае вы избегаете статических методов, но в случае ведения журнала (частный случай) это самый простой и чистый маршрут. В статическом классе вы можете легко вставить экземпляр через конфигурационный файл/фреймворк, чтобы получить тот же эффект, что и DI.
Моя проблема связана с перспективой тестирования модулей.
В приведенном выше примере кода предположим, что точка DoSomething() заключалась в том, чтобы добавить два числа вместе. Я бы написал свои юнит-тесты для этого. Как насчет регистрации?
Должен ли я писать unit test для ведения журнала (но использовать экземпляр mock для самого журнала)? Я знаю, если бы это было так, мне пришлось бы написать интеграционный тест, чтобы доказать, что регистратор фактически написал в файл журнала, но я не уверен.
После разработки, основанной на тестировании (что я делаю) мне понадобится unit test для того, чтобы диктовать интерфейс нет?
Любые советы?