Meine Klasse hat diese Zeile:
%Vor%Wenn ich zum Komponententest gehe, kann ich keinen moq-Logger in diese Schnittstelle injizieren, um Protokollaufrufe zu zählen.
Gibt es eine Möglichkeit, dies zu tun? Log4net empfiehlt statische Schreibmuster für Logger. Was ist der beste Weg, damit umzugehen?
Während log4net dieses Muster empfiehlt, hindert Sie nichts daran, den Logger außerhalb der Klasse zu instanziieren und zu injizieren. Die meisten IoCs können so konfiguriert werden, dass sie ein und dieselbe Instanz injizieren. Auf diese Weise können Sie für Ihre Komponententests einen Mock injizieren.
Ich würde einen Wrapper um LogManager.GetLogger empfehlen, der immer eine und dieselbe Logger-Instanz pro Typ zurückgibt:
%Vor% Sie können MemoryAppender
anstelle eines verspotteten Loggers verwenden. Auf diese Weise können Sie log4net so konfigurieren, dass die Protokollereignisse im Speicher gesammelt und nach GetEvents()
zur Überprüfung abgerufen werden.
Ich habe diese nützlichen Beispiele gefunden:
Hier ist das erste:
%Vor%Und je detaillierter:
%Vor%Tags und Links c# unit-testing moq logging log4net