2012-04-26 11 views
8

ser un fan de QUICKCHECK, que tienen una gran cantidad derecopilar automáticamente todos quickChecks

prop_something_something = ... 

lo largo de mi programa.

Para mayor comodidad, para ejecutar fácilmente todos ellos, defino

runchecks = do 
    quickCheck prop_something_something 
    quickCheck prop_something_different 

pero ¿hay una buena manera de generar runchecks?

TL; DR: Deseo ejecutar fácilmente todos los QuickChecks en un archivo. Supongo que una forma es prefijar las pruebas ejecutables con test_ o algo similar, pero eso podría ser demasiado hacky.

Respuesta

7

Puede hacerlo con el paquete test-framework-th. Sólo hacer:

import Test.Framework.TH 
import Test.Framework.Providers.QuickCheck2 
runchecks = $(defaultMainGenerator) 

para ello se utiliza el modo de ejecución de pruebas test-framework, es decir, se obtendrá un poco más información que la que se obtendría con sólo ejecutar las pruebas, una tras otra, que muchas veces es una buena cosa .

Es obvio que se necesita TemplateHaskell para que esto funcione; agregue Default-extensions: TemplateHaskell a su archivo Cabal, o agregue {-# LANGUAGE TemplateHaskell #-} a la parte superior del archivo.

+0

Al solo agregar eso, aparece este error: http://hpaste.org/67672 - ¿Tengo que hacer otros cambios? Pegaré más código si quieres. –

+0

Aparentemente, también debe incluir el módulo de proveedor 'QuickCheck2', lo que tiene sentido, supongo. Ver mi respuesta actualizada para más información. – dflemstr

+0

Sí, agregando importación Test.Framework.Providers.QuickCheck2 funcionó. Gracias. :) –

8

Nota adicional: esta funcionalidad también existe en QuickCheck 2, consulte la función quickCheckAll, que requiere una importación de Test.QuickCheck.All y TemplateHaskell. quickCheckAll probará todas las funciones en su módulo cuyo nombre comienza con prop_.

Cuestiones relacionadas