java mockito powermock powermockito

java - método protegido burlón



mockito powermock (1)

Cáscara de nuez: no siempre se puede usar para aplastar espías; utilizar doReturn .

Suponiendo que las importaciones estáticas de spy y doReturn (ambas PowerMockito ):

@RunWith(PowerMockRunner.class) @PrepareForTest(B.class) public class BTest { @Test public void testClass() throws Exception { B b = spy(new B()); doReturn(42).when(b, "m"); b.asd(); } }

También puede @PrepareForTest(A.class) y configurar doReturn on when(a, "m") . Lo que tiene más sentido depende de la prueba real.

Quiero burlarme de un método protegido heredado. No puedo llamar a este método directamente desde el código java, ya que se hereda de la clase que está en otro paquete. No puedo encontrar una manera de especificar este método para marcar when(...)

package a; public class A() { protected int m() {} } package b; public class B extends a.A { // this class currently does not override m method from a.A public asd() {} } // test package b; class BTest { @Test public void testClass() { B instance = PowerMockito.spy(new B()); PowerMockito.when(instance, <specify a method m>).thenReturn(123); //PowerMockito.when(instance.m()).thenReturn(123); -- obviously does not work } }

Miré en PowerMockito.when anulaciones y esto parece que son solo para métodos privados!

¿Cómo especificar el método protegido?