Prueba de código asincrónico con JUnit

Quiero probar un código que se basa en una transmisión de red. El código realiza una solicitud y proporciona una devolución de llamada: cuando se completa la solicitud, se activa la devolución de llamada. Me gustaría burlarme de la transmisión de la red y usarla Thread.sleeppara simular cierta latencia ... pero, por supuesto, eso hará que toda la prueba se detenga.

Hasta ahora he estado haciendo nuevos hilos y usando CountDownLatch es durante toda la prueba para evitar que la prueba finalice antes de que se active la devolución de llamada. Mi objeto de red simulado crea un nuevo hilo, duerme en ese hilo y luego dispara la devolución de llamada. En realidad, eso funciona bastante bien, pero el problema es que los errores de aserción en la devolución de llamada no se informan al subproceso junit original; en cambio, recibo texto de excepción en la consola, donde es mucho más difícil de entender y usar.

Espero que haya:

  1. Una forma de canalizar la assertEqualssalida de hilos generados en el colector de salida principal JUnit, o
  2. Una forma totalmente diferente y mejor de probar el código de subprocesos en JUnit, o
  3. Alguna forma de simular código asincrónico en un solo hilo

Gracias por cualquier idea!

Respuesta 1

Estoy probando el programa VisualVM que viene con los nuevos JDK. Estoy haciendo perfiles en él e intentando perfilar CPU en solo métodos en un paquete particular. Puse lo siguiente en el "Perfil ...

Me gustaría crear un archivo XML usando Java. Estructura de mi archivo XML: <? Xml version = "1.0" encoding = "UTF-8"?> <CONFIGURATION> <BROWSER> chrome </BROWSER> <BASE> http: ...

Estoy usando 2 tablas (JTable) con sus DefaultTableModels. La primera tabla ya está poblada. La segunda tabla se rellena para cada fila de la primera tabla (utilizando una consulta SQL). Mi propósito es ...

Por qué la salida de este programa Java es 8 y 9 mientras intentamos imprimir 010 y 011 respectivamente: prueba de clase pública {public static void main (String str []) {System.out.println (011); }} ...