2010-07-01 24 views
9

Tengo pruebas JUnit que funcionan bien. Se agregó Mockito a mi compilación y trato de poner un punto de corte en mi prueba JUnit que usa Mockito para burlar algunos de los métodos públicos. Cuando trato de ejecutar el depurador en la clase, aparece el error "no se puede instalar el punto de interrupción en XXX debido a los atributos de número de línea faltante. Modificar las opciones del compilador para generar atributos de número de línea". Revisé mi compilador y genero los números de línea.No se puede depurar el código Mockito/JUnit en Eclipse, funciona bien con solo JUnit

+0

qué versión de Mockito está usando? – iwein

Respuesta

0

Si solo ocurre cuando usas Mockito, ¿entonces es porque Mockito fue compilado sin soporte para depuradores?

Además, compruebe que tiene la misma configuración de compilación para sus clases de prueba que para su código normal.

+0

Creo que @ albert-t-wong decía que el código simulado dinámico (generado) no tenía información de depuración, no que no podía depurar el código fuente de Mockito. – cleberz

2

Intenta eliminar y volver a agregar puntos de corte, puede ser que un punto de interrupción actual haga referencia a una versión anterior de una clase. ¡Solo eso!

Tal vez this post in the Mockito group puede ayudarlo.

1

Tengo los mismos mensajes (Eclipse Luna).

A pesar de la gran cantidad de mensajes de error, la depuración sigue funcionando si el depurador llega a su punto de interrupción. Solo tiene que hacer clic en "Aceptar" en todos ellos, o deshabilitar estos mensajes.

Creo que el problema se origina al colocar puntos de interrupción en una clase extendida (es probable que el mockito extienda dinámicamente las clases simuladas) y que Eclipse no pueda rastrear el código fuente.

0

Además de esta pregunta siendo viejo, tuve el mismo problema hoy y la solución fue bastante simple, pero me tomó un tiempo darme cuenta. Así que esto puede ser de ayuda para quien tropieza aquí.

Acabo de tener un viejo conjunto de puntos de interrupción y uno de ellos apuntaba a un código cambiado, por lo que la posición del punto de interrupción registrado ya no era buena.

Mi consejo es tratar de eliminar todos los puntos de interrupción ofensivos y volver a instalarlos en el código actual. Después de una compilación limpia, solo para asegurarse de señalar el último binario. :)

1

La excepción que está viendo es causada por intentar depurar dinámicamente los métodos de simulación vacíos generados por la función simulacro(). A partir de su pregunta, parece que realmente desea utilizar simulaciones parciales en lugar de burlas completas, donde solo se burlan de algunos métodos y las llamadas restantes se delegan en la implementación real.

Para crear simulacros parciales, usted debe utilizar el método de en lugar del método maqueta()espía(). lo tanto, utilizar

MyClass myMock = spy(new MyClass()); 

en lugar de

MyClass myMock = mock(MyClass.class); 
Cuestiones relacionadas