Qualcuno può darmi un breve esempio di test delle azioni IO usando Monadic QuickCheck?Test delle azioni IO con Monadic QuickCheck
risposta
Il modulo Test.QuickCheck.Monadic consente di testare il codice monadico, anche le operazioni eseguite in IO
.
Un test di proprietà monodico è di tipo PropertyM m a
, dove m
è il campo in cui viene eseguito il test e a
viene infine ignorato. Nel caso di PropertyM IO a
, convertire il test monadico in un Property
utilizzando monadicIO
; per tutte le altre monadi, si usa invece monadic
(che accetta una funzione per eseguire la monade, qualcosa che non ha lo IO
).
In un test monadico, il valore return
ed escluso dalla monade viene ignorato. Per controllare un'espressione, utilizzare assert
; assert
un valore falso fallirà il test. Utilizzare run
per eseguire il codice nel monad in fase di test.
Ci sono altre azioni monadiche a vostra disposizione. Ad esempio, pick
genererà nuovi input di test da Gen a
e pre
verificherà le condizioni di prova. Questi sono utili se gli input di test o le precondizioni stessi dipendono da valori calcolati tramite il monad in fase di test, nel qual caso il modo normale di generare input o di controllare le preconizzazioni non funzionerà.
Ecco un esempio di test del codice IO
: controlliamo che dopo aver scritto qualcosa in un file temporaneo, possiamo leggere gli stessi dati indietro. A scopo dimostrativo, imporremo la condizione che scriviamo almeno un byte nel file. Le due proprietà di test fanno la stessa cosa; uno usa pick
e pre
inutilmente mentre l'altro no.
Il riferimento standard per il test del codice monadico è "Testing Monadic Code with QuickCheck". Mostra vari modi di test nel contesto di una monade come IO.
Ma dovresti davvero prendere in considerazione la possibilità di postare una domanda più concreta su cosa vorresti testare.
Al giorno d'oggi il collegamento non funziona. –
Koen sembra riorganizzare la sua homepage. Prova invece il seguente URL: [www.cse.chalmers.se/~rjmh/Papers/QuickCheckST.ps](http://www.cse.chalmers.se/~rjmh/Papers/QuickCheckST.ps) – svenningsson
- 1. Utilizzare i test quickCheck con Cabal?
- 2. Test delle proprietà di QuickCheck contro più tipi?
- 3. Haskell - Test Parsec con l'aiuto di QuickCheck
- 4. Test delle prestazioni IO in Linux
- 5. azioni Sequencing IO in parallelo
- 6. Quickcheck per test non booleani
- 7. Monadic .NET Types
- 8. Haskell e azioni IO di basso livello
- 9. Monadic Fold in Constant Space
- 10. Barra delle azioni contestuale con DialogFragment
- 11. SwitchCompat nella barra delle azioni, con frammento
- 12. Haskell Cabal QuickCheck Integration
- 13. QuickCheck 2 elaborazione batch
- 14. Come ottenere il valore normale da azioni IO in Haskell
- 15. Utilizzo di quickCheck
- 16. verboseCheck in QuickCheck 2?
- 17. Stream Haskell con effetti IO
- 18. valori estratto da un elenco di azioni IO
- 19. QuickCheck per Javascript
- 20. Come fare clic sugli elementi della barra delle azioni durante il test con Android Espresso?
- 21. proprietà condizionale QuickCheck
- 22. Haskell QuickCheck minimo contatore esempio
- 23. Barra delle azioni AndroidSherlock SearchView
- 24. Sincronizzazione delle azioni in Silverlight
- 25. Invio di ulteriori azioni durante la gestione delle azioni
- 26. Transazioni frammento, barra delle azioni e backstack
- 27. Haskell. Gestione delle eccezioni non IO
- 28. Novità di QuickCheck 2?
- 29. Il sottomenu della barra delle azioni non funziona con actionLayout
- 30. Utilizzo della barra delle azioni contestuale con frammenti
Dare un esempio di ciò che si desidera testare, renderebbe la domanda migliore. – Egon