¿Es posible/fácil simular métodos de registro NLog, utilizando Rhino Mocks o similar?¿Es posible simular los métodos de registro de NLog?
Respuesta
Solo puede simular métodos virtuales. Pero si crea alguna interfaz para el registro y luego lo implementa usando NLog Puede usar la inyección de dependencia y en Sus pruebas usar la interfaz simulada para ver si el sistema bajo prueba (SUT) está registrando lo que espera que se registre.
public class SUT
{
private readonly ILogger logger;
SUT(ILogger logger) { this.logger = logger;}
MethodUnderTest() {
// ...
logger.LogSomething();
// ...
}
}
// and in tests
var mockLogger = new MockLogger();
var sut = new SUT(mockLogger);
sut.MethodUnderTest();
Assert.That("Expected log message", Is.Equal.To(mockLogger.LastLoggedMessage));
La respuesta simple es "no". Al mirar el código, no se admite la inyección de dependencia, lo que parece más bien un descuido, especialmente porque no parece difícil de implementar (a primera vista).
Las únicas interfaces en el proyecto están ahí para admitir objetos de interoperabilidad COM y algunas otras cosas. La clase principal Logger
no implementa una interfaz ni proporciona métodos virtuales.
Puede proporcionar una interfaz usted mismo o utilizar Moles/TypeMock/otro framework de aislamiento para simular la dependencia.
Usando Nuget: install-package NLog.Interface
continuación: ILogger = new LoggerAdapter([logger-from-NLog]);
Simple, pero efectivo. El proyecto Github está aquí si alguien quiere ver lo que hace: https://github.com/uhaciogullari/NLog.Interface – killthrush
- 1. Simular + = en Lua, ¿es posible?
- 2. ¿Es posible tener métodos dentro de los métodos?
- 3. NLog rotar y limpiar archivos de registro
- 4. Cómo comprimir archivos de registro con NLog
- 5. NLog no crea el archivo de registro
- 6. Cómo simular (con Moq) los métodos de Unity
- 7. ¿Es posible sobrecargar los métodos múltiples de Clojure en Arity?
- 8. ¿Es posible redefinir los métodos Java de Clojure?
- 9. no implementando todos los métodos de interfaz. ¿Es posible?
- 10. ¿Es posible simular un mensaje de buffer de protocolo Java?
- 11. ¿Es posible encadenar métodos de diferentes características?
- 12. visor de registro decente que trabaja con Nlog
- 13. ¿es posible simular/falsificar un método de extensión?
- 14. NLog: no se puede escribir en el registro de eventos
- 15. ¿Es posible el registro pasivo en .NET?
- 16. registro de LINQ a SQL genera SQL para Nlog
- 17. NLog División de archivos
- 18. EF4: ¿es posible simular ObjectContext para probar la unidad?
- 19. ¿Es posible tener errores de registro de raíles al sembrar
- 20. ¿Puedo usar jQuery.extend para simular la sobrecarga de métodos?
- 21. NLog rendimiento
- 22. ¿Es posible identificar métodos alias en Ruby?
- 23. Nlog - Generación de la sección de encabezado de un archivo de registro
- 24. ¿Cuál es la mejor forma de usar NLog con MEF?
- 25. reenviar de log4net a NLog
- 26. Nlog y personalizados Niveles
- 27. Java: ¿es posible generar la stacktrace con firmas de métodos?
- 28. registro interno Nlog que no trabajan con ASP.Net MVC
- 29. ¿Es posible garantizar el orden en que se invocan los métodos de @PostConstruct?
- 30. ¿Qué es mejor? Los métodos estáticos o métodos de instancia
Trate de mirar http://slf.codeplex.com/ – Jon
ver post detallada [Utilización Nlog con la inyección de dependencia] (http: //blog.tonysneed .com/2011/10/09/using-nlog-with-dependency-injection /). La publicación utiliza NInject como un ejemplo DI. –