La manera en que DUnit normalmente funciona es escribir algunos métodos publicados, y DUnit los ejecuta como pruebas. Lo que quiero hacer es un poco diferente. Quiero crear pruebas en tiempo de ejecución basadas en datos. Estoy tratando de probar un módulo particular que procesa archivos de entrada para crear archivos de salida. Tengo un conjunto de archivos de entrada de prueba con los correspondientes archivos de salida buenos conocidos. La idea es crear dinámicamente pruebas, una para cada archivo de entrada, que procesen las entradas y verifiquen las salidas con las buenas conocidas.Prueba de DUnit basada en datos
La fuente real de datos aquí, sin embargo, no es importante. La dificultad es hacer que DUnit se comporte de una manera basada en datos. Por el bien de este problema, supongamos que la fuente de datos fuera solo un generador de números aleatorios. Este es un ejemplo de un problema concreto que llega al corazón de la dificultad:
Cree algunos objetos de prueba (TTestCase o lo que sea) en tiempo de ejecución, por ejemplo, 10 de ellos, donde cada uno
- lleva el nombre en tiempo de ejecución de un entero generado aleatoriamente. (Por 'nombre' me refiero al nombre de la prueba que aparece en el árbol de prueba-corredor.)
- Pasa o falla según un número entero aleatorio. Pasa por par, falla por impar.
Desde el diseño de DUnit, se ve que fue diseñado con la suficiente flexibilidad en mente para hacer este tipo de cosas posible. No estoy seguro de que así sea. Intenté crear mi propia clase de prueba heredando TAbstractTest e ITest, pero no se pudo acceder a algunos métodos cruciales. También traté de heredar de TTestCase, pero esa clase está estrechamente ligada a la idea de ejecutar métodos publicados (y las pruebas llevan el nombre de los métodos, por lo que no podía simplemente llamar a una sola, por ejemplo, 'ir', porque entonces todas mis pruebas se llamarían 'ir', y quiero que todas mis pruebas se nombren individualmente).
O bien, ¿hay alguna alternativa a DUnit que pueda hacer lo que yo quiera?
Eso es increíble. Gracias. Intentaba algo similar, pero algunos errores en el camino se sumaron para que no funcionara. Gracias de nuevo. –
Me alegro de poder ayudar, aplausos. –
¿Qué sugiere para tener tanto casos controlados por datos como ordinarios en la misma clase de prueba? –