Llamada de método estático simulada utilizando @RunWith(MockitoJUnitRunner.class)
Estoy usando @RunWith(MockitoJUnitRunner.class)
. Necesito burlar una llamada de método estático, MosConfigFactory.getInstance()
. No puedo usar @RunWith(PowerMockRunner.class)
. ¿Cómo puedo burlar una llamada de método estático usando MockitoJUnitRunner?
davy.ai
Desafortunadamente, no es posible simular llamadas a métodos estáticos utilizando el
MockitoJUnitRunner
. ElMockitoJUnitRunner
solo admite la simulación de métodos y objetos de instancia.Para simular llamadas a métodos estáticos, se requiere
PowerMockRunner
, que extiendeMockitoJUnitRunner
y proporciona funcionalidades adicionales para simular métodos estáticos y privados.Si no es posible utilizar
PowerMockRunner
, una solución alternativa sería crear una clase envolvente alrededor de la llamada al método estático y simular la clase envolvente en su lugar utilizandoMockito
.Por ejemplo, en lugar de llamar a
MosConfigFactory.getInstance()
, cree una claseConfigFactory
con un método de instancia que llame aMosConfigFactory.getInstance()
y simule este método utilizandoMockito
.Luego, en su clase de prueba, simule el método
getInstance()
deConfigFactory
.Tenga en cuenta que este enfoque puede no ser ideal ya que requiere la creación de clases adicionales y agrega complejidad innecesaria al código. Se recomienda utilizar
PowerMockRunner
o modificar el código para evitar llamadas a métodos estáticos si es posible.