unit testing - tutorial - ¿Es posible tener casos de prueba de ejecución de prueba común en un orden aleatorio?
test en java (1)
Tengo un par de docenas de módulos de suite de pruebas comunes para una aplicación de Erlang que he escrito. Todas las pruebas están pasando, pero creo que las suites de prueba son muy frágiles. Reordenar las pruebas hace que algunas fallen. No leí el capítulo de dependencias en la documentación de Prueba Común y, a menudo, había asumido el estado de la aplicación en las pruebas unitarias. Ahora me gustaría que mi suite de pruebas sea más sólida.
Aleatorizar orden de prueba?
Viniendo de Ruby, donde Rspec ejecuta pruebas en orden aleatorio, me encantaría tener esta misma funcionalidad en Common Test. ¿Alguien sabe si hay una manera de aleatorizar el orden de prueba en Common Test? No he visto nada en los documentos sobre la aleatorización de la orden de prueba.
¿Aleatorizar valores devueltos de all/0
y groups/0
?
También pensé en alterar la salida de los callbacks all/0
y groups/0
. En este momento solo devuelven listas codificadas. ¿Quizás podría aleatorizar el orden de los elementos y hacer que se ejecuten en diferentes órdenes cada vez? ¿Alguien tiene alguna experiencia aleatorizando el orden de prueba al cambiar los valores de retorno de devolución de llamada en Prueba común? También necesitaría una forma de volver a ejecutar las pruebas en el orden en que fallaron como el indicador de semilla de Rspec .
¡Gracias por adelantado!
El uso de la propiedad shuffle
o {shuffle, Seed}
en la definición de grupos de prueba puede ser útil, de esta manera:
groups() ->
[{group1, [shuffle], [test1, test2, test3]},
{group2, [shuffle], [test1, test2, test3]}].
Si se especifica shuffle, los casos en el grupo se ejecutarán en orden aleatorio. Hay buenos ejemplos en esta documentación oficial.