Las pruebas unitarias para aplicaciones JSL se pueden realizar con el script del controlador GUI de JSL-Unit (es decir, RunJSL_Unit.jsl) y un conjunto de scripts y tablas de pruebas unitarias. Los scripts y tablas de prueba unitaria son aquellos archivos JSL y JMP en el directorio de pruebas (o uno de sus subdirectorios) con el prefijo prueba (por ejemplo, prueba geométrica media.jsl). El controlador define una función de afirmación ut, que cada prueba unitaria debe llamar para cada caso de prueba. El prototipo de ut afirmar es:
ut assert(expression, expectedvalue <,stresscase="N">)
El primer argumento es una expresión que, cuando se evalúa, da como resultado el valor real del caso de prueba y el segundo argumento es el valor esperado del caso de prueba. Tenga en cuenta que la expresión y el valor esperado son argumentos obligatorios, pero el caso de estrés es opcional, con un valor predeterminado de N. El argumento de caso de estrés está destinado a aquellos casos de prueba que pueden considerarse eventos raros y que probablemente resulten en una falla y, por lo tanto, pueden omitirse en ejecuciones de prueba típicas.
Nota: El controlador GUI proporciona una casilla de verificación que, cuando está marcada, incluye casos de prueba de esfuerzo.
Los resultados de las pruebas numéricas se comparan utilizando un épsilon para representar la variación aceptable (es decir, comparación difusa). Hay dos valores épsilon, se usa un épsilon absoluto cuando el resultado esperado es 0 y se usa un épsilon relativo para todos los demás casos. Los valores épsilon se restablecen a los valores predeterminados antes de ejecutar cada script de prueba, y estas son variables globales que un script de prueba puede sobrescribir si lo desea.
ut zero epsilon = 1e-12; // close enough when expected is 0
ut relative epsilon = 1e-9; // close enough relative to expected value
Los detalles de la ejecución se escriben en el registro. Para las fallas, se informa el resultado real y esperado, más el LRE (solo para pruebas numéricas). LRE es un acrónimo que se refiere al logaritmo (base 10) del error relativo (es decir, -log10(abs(q - c)/abs(c)).
Nota: También existe una variante de ut afirmar llamada ut afirmar dígitos para cuando desee configurar épsilon sobre la marcha para probar un número específico de dígitos de precisión. Agrega un tercer argumento que es el número de dígitos de precisión requeridos. Esto es especialmente útil cuando el valor esperado solo se proporciona a una determinada cantidad de dígitos. Por ejemplo,
ut assert digits(Expr(Sqrt(2)), 1.414, 4); // is sqrt(2) accurate to 4 digits
ut assert digits(Expr(Pi()), 3.14159, 6); // is pi() accurate to 6 digits
ut afirmar dígitos también proporciona el argumento del caso de estrés como un cuarto argumento opcional. Para las tablas de datos de prueba, los valores épsilon deben almacenarse como variables de tabla y usarse para calcular el resultado de aprobación/falla.
Esto parece justo lo que estaba buscando, para depurar un script JSL de más de 5000 líneas. Emocionado por probarlo.¡Gracias!