unitarios test mock ejemplos ejemplo datos java junit mockito powermock

java - test - mockito maven



El uso de PowerMockito.whenNew() no se burla y se llama el método original (1)

@PrepareForTest colocar la clase donde se llama al constructor en la anotación @PrepareForTest lugar de la clase que se está construyendo. Consulte Construcción simulada de nuevos objetos .

En tu caso:

@PrepareForTest(MyQueryClass.class)

@PrepareForTest(A.class)

Mas general:

@PrepareForTest(NewInstanceClass.class)

@PrepareForTest(ClassThatCreatesTheNewInstance.class)

Tengo un código algo así como a continuación:

Class A { public boolean myMethod(someargs) { MyQueryClass query = new MyQueryClass(); Long id = query.getNextId(); // some more code } } Class MyQueryClass { .... public Long getNextId() { //lot of DB code, execute some DB query return id; } }

Ahora estoy escribiendo una prueba para A.myMethod(someargs) . Quiero omitir el método real query.getNextId() y en su lugar devolver un valor de código auxiliar. Básicamente, quiero burlar MyQueryClass .

Entonces en mi caso de prueba, he usado:

MyQueryClass query = PowerMockito.mock(MyQueryClass.class); PowerMockito.whenNew(MyQueryClass.class).withNoArguments().thenReturn(query); when(query.getNextId()).thenReturn(1000000L); boolean b = A.getInstance().myMethod(args); //asserts

@RunWith(PowerMockRunner.class) y @PrepareForTest({MyQueryClass.class}) al comienzo de mi clase de prueba.

Pero cuando depuro la prueba, sigue llamando al método real getNextId() de la clase MyQueryClass .

¿Que me estoy perdiendo aqui? ¿Alguien puede ayudar ya que soy nuevo en Mockito y PowerMockito?