Intento de código auxiliar Clase de actividad androide usando PowerMockito lanza RuntimeException “Talón!”

StackOverflow https://stackoverflow.com/questions/3739737

Pregunta

ejemplo donde solían PowerMock y EasyMock al talón / burlarse del menú y MENUITEM clases para android. He estado tratando de hacer algo similar con PowerMock y Mockito con la clase de actividad.

Yo entiendo que muchos de los métodos son finales y que en el Android.jar todos ellos sólo tirar RuntimeException ( "stub").

También entiendo que esta prueba no es completa pero que sólo quieren ver si es posible burlarse de la clase Actividad androide.

Sin embargo, dado que PowerMock que permite a las clases simuladas con métodos finales no deben funciona este código?

@RunWith(PowerMockRunner.class)
@PrepareForTest(Activity.class)
public class MyTestCase extends TestCase {

    public void testPlease_JustWork() throws Exception {
        Activity mockActivity = PowerMockito.mock(Activity.class);

        PowerMockito.when(mockActivity.getTitle()).thenReturn("Title");
    }
}

Me gustaría pensar que la RuntimeException ya no ocurrirá y "Título" sería devuelto pero todavía produce la excepción.

He intentado todo tipo de cosas diferentes como doReturn("Title").when(mockActivity).getTitle(); y suppress(constructor(Activity.class));

¿Estoy haciendo algo mal o es sólo no es posible?

¿Fue útil?

Solución

Sólo traté su ejemplo de código y funciona aquí, extraño. He descargado PowerMock 1.4.5 con Mockito y JUnit incluyendo dependencias y utilizamos el android.jar desde el SDK (2.2). Sólo falla con la excepción si quito el @PrepareForTest.

editar

Se podría utilizar el android.jar con el código de excepción eliminado, previsto en el artículo que se hace referencia.

Otros consejos

Probablemente no sea una respuesta directa a su pregunta, pero usted podría intentar Robolectric el fin de la prueba partes de su aplicación para Android en su PC.

Roboelectric evita el Talón! excepción y le da una cierta mínima Android clases aplicación

Creo que la respuesta es que el orden de los asuntos bibliotecas de referencia debido a que la android.jar incluye algunos esbozos de JUnit.

Usted tiene que asegurarse de que en su proyecto de prueba, si vas a 'propiedades' y luego 'Java Build Path' que el frasco junit asociado con la versión completa de powermock ha descargado aparece en la pestaña 'Orden y Exportación' encima el android.jar. Si no lo hace, el sistema resuelve los paquetes junit.framework y junit.runner de android.jar antes de que los resuelve de la junit.jar incluido en powermock.

Me doy cuenta de esta pregunta es viejo, pero creo que esta es la respuesta correcta, así que quería asegurarse de documentarla en la cuestión.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top