es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no es posible simular llamadas a métodos estáticos utilizando el MockitoJUnitRunner. El MockitoJUnitRunner 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 utilizando Mockito.

    Por ejemplo, en lugar de llamar a MosConfigFactory.getInstance(), cree una clase ConfigFactory con un método de instancia que llame a MosConfigFactory.getInstance() y simule este método utilizando Mockito.

    public class ConfigFactory {
        public MosConfigFactory getInstance() {
            return MosConfigFactory.getInstance();
        }
    }
    

    Luego, en su clase de prueba, simule el método getInstance() de ConfigFactory.

    @RunWith(MockitoJUnitRunner.class)
    public class MyTest {
    
        @Mock
        ConfigFactory configFactory;
    
        @Test
        public void myTest() {
            MosConfigFactory mosConfigFactory = new MosConfigFactory();
            Mockito.when(configFactory.getInstance()).thenReturn(mosConfigFactory);
    
            // Código de prueba...
        }
    }
    

    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.

Comments are closed.