Pregunta

Me enfrento a lo que creo que es un problema común, pero no he encontrado mucha discusión o herramientas existentes para abordarlo. Estoy tratando de configurar un sistema de prueba de integración (que ya tiene un fuerte conjunto de pruebas unitarias) que admite QA que envía datos de entrada y resultados esperados (en forma de archivos planos, idealmente) que se puede ejecutar desde una clase JUNIT estandarizada.

Tengo un plan para rodar el mío aquí usando el Junit @Paramaterized anotación. Estoy imaginando cada conjunto de datos y resultados que tienen un archivo de control, y todos los archivos de control se colocan en un directorio. El método del generador de parámetros escanearía este directorio y devolvería una lista de estos archivos. El constructor de la prueba leería este archivo y configuraría los datos de entrada y los resultados esperados.

Antes de comenzar a escribir esto, quería ver si ya existían herramientas para hacer este tipo de cosas, y si no, obtenga algunas opiniones sobre la solución que propongo.

La aplicación en sí es una herramienta de tipo ETL de back -end, que toma datos de varios archivos de entrada en varios formatos y produce resultados en una base de datos. Ya tengo algunas pruebas de integración estática que usan una base de datos de Derby in Memory para verificar los resultados de los datos de entrada trivial, y planeo usar un sistema similar para confirmar los datos aquí. Los resultados esperados serían en forma de (key_value, column, expected value) Triples. Quiero usar JUNIT para vincular el resto de nuestras pruebas y la infraestructura de informes de resultados.

¿Fue útil?

Solución

Mira esto Spock, un marco de pruebas basado en Groovy con un fuerte soporte para pruebas basadas en datos. Spock está diseñado para probar el código Java (y Groovy), y es totalmente compatible con JUnit (de hecho, las pruebas de Spock se ejecutan con JUnit). Ver aquí Para una prueba de ejemplo simple que extraiga datos de una base de datos.

En general, su plan me suena razonable y también se puede realizar con Junit y @parameterized. Sin embargo, Spock y Groovy pueden facilitar su vida. Por ejemplo, trabajar con archivos de texto y bases de datos es mucho más fácil en Groovy que en Java.

Descargo de responsabilidad: Soy el creador de Spock.

Otros consejos

Prefiero Spock. Pero sí veo que hay un marco de Junitparams que es mucho más legible que las pruebas parametrizadas de Junit directas:

https://github.com/pragmatists/junitparams

Se puede encontrar una gran descripción en:

https://weblogs.java.net/blog/johnsmart/archive/2014/07/23/data-driven-unit-testing-java

Para otros que llegan a esta pregunta ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top