Мы определяем интерфейс ведения журнала и имеем реализацию log4net, реализацию unitTest и реализацию null.
Мы используем внедрение зависимостей, чтобы передать реализацию loggingInterface.
Реализация модульного теста имеет дополнительные методы, такие как 'bool ErrorWasLogged ()', так что в наших модульных тестах мы можем утверждать, что важная информация регистрируется. Для тестов, где мы не заинтересованы в тестировании того, что было зарегистрировано, мы используем реализацию null.