Estoy usando Mockito para escribir un caso de prueba JUnit y estoy tratando de omitir una invocación de método estático dentro de mi método de prueba. Obtengo una NullPointerException mientras ejecuto el caso de prueba.
¿Hay alguna forma de omitir la invocación mencionada anteriormente sin usar PowerMockito o qué correcciones se necesitan en el enfoque mencionado a continuación?
A continuación se muestran los fragmentos de código que le ayudarán a comprender el problema:
=> Este es mi código para el cual quiero escribir un caso de prueba JUnit usando Mockito.
class MyClassToTest{ public void methodToTest(){ JsonObject obj = MyUtilClass.staticMethod(arg1); } } => A continuación se muestra la definición de MyUtilClass :
class MyUtilClass{ public static JsonObject staticMethod(JsonObject arg1){ //use arg1 to populate return object return jsonobject; } } => A continuación se muestra el fragmento de cómo se ve mi clase de prueba y método de prueba actuales para MyClassToTest.methodToTest
class MyTestClass{ public void test_methodToTest(){ JsonObject dummy_jsonObject = new JsonObject().put("foo","foo"); doReturn(dummy_jsonObject).when(MyUtilClass.staticMethod(any())); } }Si desea simular su staticMethod de MyUtilClass con Mockito (se requiere la versión 3.4.0 o superior), el apéndice se ve así (supongo que usa una versión de Java> 9):
@Test void shouldMockStatic() { JsonObject dummy_jsonObject = new JsonObject().put("foo","foo"); try (MockedStatic<MyUtilsClass> mockedStatic = Mockito.mockStatic(MyUtilsClass.class)) { mockedStatic.when(() -> MyUtilsClass.staticMethod(anyString()).thenReturn(dummy_jsonObject); // now invoke your class under test } }Puede encontrar más información y ejemplos de esta característica de Mockito aquí .