He encontrado las siguientes dos consejos útiles para la depuración de this answer:
- Grapher visualiza inyectores. Si su proveedor personalizado implementa HasDependencies, puede aumentar este gráfico.
- Binder.skipSources() le permite escribir extensiones cuyos mensajes de error rastrean correctamente los números de línea.
Binder.skipSources() es útil si usted escribe métodos auxiliares de unión genéricos y Guice sólo informa del número de línea del método de ayuda genérica, pero (lo más probable) en realidad desea que el número de línea de la persona que llama en un nivel superior de la pila en su lugar.
Estoy desarrollando para Android, por lo que el tiempo de construcción puede ser bastante lento desde el momento en que modifico mis enlaces hasta que veo los resultados de mis cambios en el dispositivo o el simulador. Así que he desarrollado pruebas unitarias que verificarán los enlaces de Guice directamente en la PC host. Incluso si no está desarrollando para Android, puede ser útil escribir las pruebas de unidad de unión de Guice de la siguiente manera. En este momento, la mía ser algo como esto (aquí en Scala - Java tendría un aspecto similar)
class ProviderTest {
var injector : Injector = null
@Before
def setUp() {
injector = Guice.createInjector(
new BindModule1(),
new BindModule2(),
new BindGlobals()
)
}
@After
def tearDown() {
}
@Test def InjectedClass1WasBound() {
val provider = injector.getProvider(classOf[InjectedClass1])
}
@Test def InjectedClass2WasBound() {
val provider = injector.getProvider(classOf[InjectedClass2])
}
}
escribo pruebas a partir de la clase más ligado profundamente. Es decir, si se inyecta C en B, que se inyecta en A, comenzaré a probar en C. Si la unidad que prueba el enlace de C falla, comenzaré a comentar los campos inyectados en C hasta que obtenga el enlace correcto. Luego me muevo por la jerarquía de inyección repitiendo este proceso.
Por supuesto, si sigue el desarrollo impulsado por pruebas y se asegura de incluir pruebas de encuadernación completa de Guice en su suite, detectará estos errores tan pronto como rompa una encuadernación.
los gráficos son en realidad bastante útiles. simplemente tiene que trabajar con el error style = invis – wuppi
¿Puede etiquetar este java, para que tengamos colorido? – wuppi