Depuración de Eclipse “fuente no encontrada”

Acabo de empezar a usar Eclipse, así que no me molestes;). Pero cuando bash depurar un caso de prueba JUnit, aparece un cuadro de diálogo que dice que el origen no se encuentra cuando llego a esta línea en el código de mi método de prueba:

Assert.assertEquals(1, contents.size()); 

Sé que debería ir e intentar descargar la fuente desde algún lado, pero realmente no quiero porque no tengo ningún interés en ingresar al código JUnit. Tengo el jarro de tiempo de ejecución de JUnit entonces ¿Por qué Eclipse espera que tenga todas las herramientas de código fuente referenciadas para depurar mi propio código (parece algo tonto)?

Mi principal pregunta es, ¿cómo puedo decirle a Eclipse que se salte este diálogo cuando la fuente no está disponible y me permite continuar depurando mi propio código?

[Editar]

He aislado la causa de esto. Parece que Eclipse parece pensar que necesita la fuente cuando el código JUnit interno arroja una excepción. En general, ¿hay alguna forma de decirle que no es así y simplemente hacer que arroje un diálogo de error de algún tipo?

Tuve este problema muy molesto durante mucho tiempo, pero finalmente pude resolverlo. En mi caso, se lanzaba una excepción de puntero nulo en algún lugar en la función Transformer.IsRuntimeCode (ProtectionDomain ) de Java.

Realmente no necesitaba saber sobre esto ya que la excepción estaba siendo capturada y manejada, pero eclipse detendría la depuración cada vez que esto ocurría y me dijo que la fuente no estaba disponible. Como resultado, constantemente tuve que seguir presionando el botón para continuar con la ejecución del código.

Para evitar que esto suceda, yo:

  1. Haga clic en la ventana “Puntos de interrupción” en la parte inferior de la pantalla de depuración
  2. Haz clic derecho en “NullPointerException”
  3. Desmarcado “Caught”

Esto evitó que el depurador pausara el flujo del progtwig durante una NullPointerException capturada.

texto alternativo http://www.SharpDetail.com/p/so_breakpoint.gif

La stack de llamada de depuración mostrará una línea de código fuente JUnit al lanzar una excepción.
Pero no debería preocuparse por eso, si no tiene el código fuente de JUnit.

Si retrocede una línea en la stack de llamadas, debería ver la línea (de su código fuente) que ha causado la excepción JUnit.
Eso debería ser suficiente para depurar tu código.


Para asociar la fuente con JUnit, puede agregar junit.jar en las librerías de su proyecto, y asocia el junit-xyz-src.jar al junit-xyzjar , así :

http://web.archive.org/web/20130227201940/http://img241.i_mageshack.us/img241/1412/eclipsejunitsrc.png

Eso generará en el .classpath de su proyecto una línea como:

  

Nota: en realidad, existiría la ruta completa de los archivos junit[...].jar en esta línea de classpathentry . Pero también podría usar los recursos vinculados para evitar ese valor fijo (la ruta completa) en su archivo .classpath .

Tuve un problema similar. Lo arreglé haciendo clic derecho en la carpeta del proyecto en el explorador de paquetes y seleccionando actualizar. La fuente del código no estaba sincronizada con el depurador y esto lo corrigió. El mensaje Transformer.IsRuntimeCode (ProtectionDomain) Source not found ya no aparece.

Calcule contents.size () en una línea separada en su lugar o establezca un punto de interrupción en el método.

También tenga en cuenta que la vista junit en Eclipse le permite navegar en el seguimiento de la stack.

Use el filtro de pasos para evitar pasar por los paquetes … junit … Haga clic derecho en el seguimiento de la stack y elija Filter Package. Es posible que deba activar el filtrado primero con Use Step Filters. ~~~

Tuve un problema similar con otro contenedor, incluso cuando señalé la fuente que lo solicitaría nuevamente. Pude resolverlo comstackndo el jar con debug="on" en ANT.