¿Cómo puedo simular fácilmente un método estático en Java?¿Cómo puedo simular fácilmente un método estático en Java (jUnit4)
estoy utilizando Spring 2.5 y JUnit 4,4
@Service
public class SomeServiceImpl implements SomeService {
public Object doSomething() {
Logger.getLogger(this.class); //a static method invoked.
// ...
}
}
no controlo el método estático que mi servicio necesita invocar así que no puedo refactor a ser más unidad comprobable. He usado el Log4J Logger como ejemplo, pero el método estático real es similar. No es una opción cambiar el método estático.
Hacer trabajo Grails, estoy acostumbrado a usar algo como:
def mockedControl = mockFor(Logger)
mockControl.demand.static.getLogger{Class clazz-> … }
…
mockControl.verify()
¿Cómo puedo hacer algo similar en Java?
¿Se puede cambiar la implementación SomeServiceImpl? –
No importa, Jon Skeet acaba de publicar lo que pensaba. ¡Me siento orgulloso! (pensando como Jon Skeet jeje) –
Sí, puedo cambiar SomeServiceImpl, pero ¿por qué debería hacerlo? ¿Por qué la indirección adicional? –