2012-03-04 12 views
5

Estoy tratando de obtener el método verify en Mockito para que funcione. Tengo la siguiente prueba:Verificación de Mockito no está fallando

@Test 
public void testShouldFail() 
{ 
    String string = mock(String.class); 
    string.length(); 
    verify(string, times(100)).length(); 
} 

Esta prueba debe fallar, pero se aprueba. ¿Alguien sabe por qué? ¿Estoy usando mal a Mockito?

actualización

Aquí hay otro ejemplo que no falla:

private interface Bar 
{ 
    public void foo(); 
} 

@Test 
public void testShouldFail() 
{ 
    Bar bar = mock(Bar.class); 
    bar.foo(); 
    verify(bar, times(100)).foo(); 
} 
+0

Usted es el segundo ejemplo de falla de dosis al realizar la prueba, ¿puede proporcionar más detalles? –

Respuesta

5

bien, debería tener cuidado con eso: por defecto, no puede burlarse de clases finales (como String) . This is a known limitation del marco.

Su ejemplo no para mí con el mensaje de error adecuado:

org.mockito.exceptions.base.MockitoException: 
Cannot mock/spy class java.lang.String 
Mockito cannot mock/spy following: 
    - final classes 
    - anonymous classes 
    - primitive types 
    at Test.testShouldFail(Test.java:6) 
     ... 

así que supongo que podría haber algunos problemas menores en la configuración de su proyecto. ¿Qué IDE estás usando? ¿Qué versión de Mockito tienes? ¿Cómo ejecutas tus pruebas?

Puede intentar usar un juego de herramientas adicional como PowerMock que le ayuda overcome this limitation. Este marco se puede usar en combinación con Mockito con bastante facilidad.

Por otro lado, String es parte del paquete java.lang, y supongo que hay algunas verificaciones de seguridad adicionales implicadas de esas clases por la VM (aunque no es seguro). No estoy convencido de que pueda burlarse (es decir, manipular el bytecode) de dicha clase (por ejemplo, obtendrá un error de compilación si intenta poner algo en el paquete java.*). Pero esto es solo una suposición de mi parte.

+0

Honestamente, acabo de utilizar 'String' como un ejemplo rápido. Aún así, es bueno saber que Mockito tiene esa limitación. He actualizado mi pregunta con otro ejemplo que no falla. Estoy usando Eclipse Indigo con Junit 4.8.2, Mockito 1.9.0 y PowerMock 1.4.11. – LandonSchropp

+0

¿Podría incluir la clase de prueba completa que realizó, incluidas las directivas de importación también? ¿Estás seguro de que has agregado los archivos JAR necesarios a tu proyecto? – rlegendi

+0

Perdón por la respuesta tardía. Parece que estabas en lo cierto. Rompí mi biblioteca de Mockito cuando agregué PowerMock. Por favor, actualice su respuesta para que pueda verificarlo. Gracias por la ayuda. – LandonSchropp

Cuestiones relacionadas