2008-12-08 12 views
6

Gracias a una actualización de biblioteca (easymock 2.2 -> 2.4), estamos teniendo pruebas que han comenzado a bloquearse. Me gustaría tener un tiempo de espera en las pruebas individuales, todas ellas. La idea es identificar las pruebas bloqueadas, actualmente estamos adivinando, y corregirlas.Pruebas de temporización en TestNG

¿Es esto posible, preferiblemente a nivel de toda la suite? Tenemos 400 pruebas, haciendo esto cada método o incluso cada clase llevará mucho tiempo.

Respuesta

5

El suite tag puede tener el atributo de tiempo de espera excedido. Este tiempo de espera se usará como predeterminado para todos los métodos de prueba.

Este tiempo de espera predeterminado puede anularse por método de prueba.

+0

Estamos usando maven, así que tuve que encontrar la configuración relevante en el plugin surefire. Desafortunadamente, no nos está diciendo en qué prueba está muriendo? Oh bueno, esa será otra pregunta. – sblundy

+0

También puede agregar el atributo de tiempo de espera al elemento bajo . Esto junto con includes/excludes dentro del elemento puede permitirle un control más detallado. – Saish

2

Si el nivel de Suite resulta ser el enfoque incorrecto (es decir, "una red demasiado amplia", porque termina marcando demasiados métodos con un límite de tiempo de espera), necesita definir un IAnnotationTransformer personalizado que, por cada elemento ilegible función, le dará la oportunidad de modificar una anotación @Test (con, por ejemplo, el setTimout() method).
(setTimout(0) cancela una directiva de tiempo de espera)

1

Usted puede hacer una búsqueda y reemplazo para "@test" con "@test (= tiempo de espera)" deben trabajar para encontrar la prueba bajo llave y se puede deshacer después de eso.

+1

esto no es muy seco – Hilikus

2

Muy tarde, pero: ejecutar jstack -l <PID> le dará el volcado de la pila, que puede inspeccionar para encontrar qué llamadas están bloqueadas. Es posible que desee muestrear algunas veces para asegurarse de que están atascados.

Cuestiones relacionadas