2009-07-04 18 views
5

¿Alguien puede recomendar un patrón para el código de prueba de la unidad dentro de una computadora portátil de Mathematica? Estoy familiarizado con la infraestructura de pruebas de unidades en Wolfram Workbench, pero también me gustaría tener un buen enfoque que se pueda usar en computadoras portátiles simples en la GUI común.¿Cuál es un buen patrón para escribir pruebas unitarias dentro de un cuaderno de Mathematica?

He estado usando una función simple "Esperar" como se muestra a continuación. Pero el problema es que debo volver a evaluar el portátil y escanearlo visualmente en busca de fallas. ¿Cuál sería una buena forma de crear una lista de pruebas o, alternativamente, escanear a través de la computadora portátil y generar una lista de ese tipo, para que todas puedan evaluarse en una sola llamada?

In[8]:= Expect[ description_, val_, expr_ ] := 
If[ 
    val == expr, 
    "ok", 
    StringJoin[ "ERROR: GOT UNEXPECTED VALUE ", ToString[expr], 
    " INSTEAD OF ", ToString[val] ] 
] 

In[9]:= Expect[ "test passes", True, True ] 
Out[9]= "ok" 

In[10]:= Expect[ "test fails", True, False ] 
Out[10]= "ERROR: GOT UNEXPECTED VALUE False INSTEAD OF True" 

Respuesta

3

Por lo tanto, lo que hago es simplemente hacer una lista de los estados que se evalúan como verdadero o falso, dependiendo de si las pruebas pasan o no. Como no hay cientos de pruebas, pero generalmente menos de 10, esto funciona bien para mí.

Si tuviera que hacerlo de forma más exagerada, probablemente usaría Throw, porque simplifica la depuración.

Por lo tanto, lo haría:

Expect[ description_, val_, expr_ ] := 
If[ 
    val != expr, 
    Throw[ 
     StringJoin[ "GOT UNEXPECTED VALUE ", ToString[expr], 
     " INSTEAD OF ", ToString[val] ] 
     , "assertion exception" 
    ] 
] 
Cuestiones relacionadas