2012-01-23 8 views
9

Sto cercando di capire come integrare alcuni test di controllo rapido con cabal. Questo gist suggerisce che la funzione quickCheck restituisce lo stato diverso da zero in caso di errore, ma non sto ottenendo tale comportamento, quindi l'utilizzo del tipo di suite di test exitcode-stdio-1.0 cabal non sembra funzionare per me a meno che non voglia chiamare il error durante i miei test.QuickCheck stato di uscita in caso di guasti e integrazione della cabina

La cabina user guide menziona anche una suite di prova detailed-1.0, ma AFAICT non esiste ancora. È ancora così?

Sembra da risposte come this one che molte persone utilizzano il test-framework package. Questo è eccessivo per me, ma è quello che dovrei usare?

Sono rimasto un po 'insoddisfatto di questa situazione.

versioni di cose che sto usando:

cabal-install version 0.10.2 
using version 1.10.1.0 of the Cabal library 
QuickCheck-2.4.1.1 

risposta

13

Guardando quickCheck's implementation, esso infatti non esce dal programma. Tuttavia, si può facilmente implementare questo comportamento utilizzando quickCheckResult:

import Control.Monad 
import Test.QuickCheck 
import Test.QuickCheck.Test 
import System.Exit 

main :: IO() 
main = do 
    result <- quickCheckResult prop 
    unless (isSuccess result) exitFailure 

mia comprensione è che detailed-1.0 non è ancora considerato pronto per l'uso generale e che exitcode-stdio-1.0 è ancora la soluzione di test consigliata per ora.

+4

So che è stato un 3 + anni, ma ho passato troppo tempo cercando di capire che è necessario anche 'importare Test.QuickCheck.Test' per 'isSuccess' su" be in scope ". Nel caso qualcuno abbia anche questo problema. In una nota a margine, c'è un modo per renderlo più bello? (per esempio, non è necessario eseguire entrambi "import Test.QuickCheck" ma anche "Test.QuickCheck.Test"?) – conrad

6

Ho utilizzato il framework di prova nell'ultima versione del pacchetto Decimal. Non era eccessivo; ha fatto solo quello che voleva. Dai uno sguardo allo complete source code se vuoi un esempio su come usarlo.

+0

Grazie per l'esempio, penso che andrò su quella strada – jberryman