¿Cuáles son las principales diferencias entre QuickCheck 1 y QuickCheck 2? Al mirar los documentos de Haddock puedo ver que está dividido en más módulos, coarbitrary
ha sido reemplazado por el nuevo tipo Fun
y la clase FunArbitrary
(que me parece más fácil de entender), y ahora es compatible con probar el código monádico. ¿Qué más debería saber?¿Qué hay de nuevo en QuickCheck 2?
39
A
Respuesta
53
que he visto una gran avance en QuickCheck 2, creo que tan importante como las pruebas de código monádico, si no más:
class Arbitrary a where
arbitrary :: Gen a
shrink :: a -> [a]
Este, es muy impresionante. El método de contracción es opcional, pero si puede proporcionar una lista de reducción "posiblemente vacía" de su tipo, cuando QuickCheck encuentre una verificación defectuosa, tratará de reducir sus datos defectuosos tratando de reducirlos y luego -Pruébalo. Se encoge mientras que falla.
Una pequeña muestra de convencerse que, sin encogerse:
FormulaPrim deparsing : *** Failed! Falsifiable (after 4 tests):
Poly (Polynome "p" [(CoeffRatio (26 % 25),PolyRest (CoeffRatio (129 % 40))),(CoeffInt 96,PolyRest (CoeffInt 11)),(CoeffInt 29,PolyRest (CoeffRatio (147 % 121))),(CoeffRatio (62 % 9),PolyRest (CoeffRatio (90 % 43))),(CoeffInt 56,PolyRest (CoeffInt 27))])
Con:
FormulaPrim deparsing : *** Failed! Falsifiable (after 2 tests and 3 shrinks):
Poly (Polynome "t" [(CoeffInt 14,PolyRest (CoeffInt 126))])
Shorter fallan ejemplo, la media de depuración más rápida :-)
Cuestiones relacionadas
- 1. verboseCheck en QuickCheck 2?
- 2. ¿Qué hay de nuevo en Razor view engine 2.x?
- 3. ¿Qué hay de nuevo en OSGi 4.2?
- 4. OAuth 2.0 - ¿Qué hay de nuevo?
- 5. ¿Qué hay de nuevo en Google Guice 3?
- 6. ¿Qué hay de nuevo en .net 4 para MVVM?
- 7. ¿Qué hay de nuevo en Python 3.x?
- 8. ¿por qué hay 2 archivos web.config
- 9. Controlar cómo se generan los datos de prueba en QuickCheck
- 10. ¿Qué hay en Apache 2 un error "atrapado SIGWINCH"?
- 11. Cómo utilizar 'oneof' en quickCheck (Haskell)
- 12. ¿Por qué hay un nuevo especial y eliminar para matrices?
- 13. Nuevo proyecto: Python 2 o Python 3?
- 14. Funciones de presentación utilizadas en las propiedades QuickCheck
- 15. ¿Por qué 2 == [2] en JavaScript?
- 16. ¿Cómo obtengo buenas (pequeñas) contracciones de QuickCheck?
- 17. ¿Por qué 2/2 es 2 en Javascript?
- 18. ¿Qué significa "2" en SQL * Plus?
- 19. nuevo Runnable() pero no hay un nuevo hilo?
- 20. ¿No hay tabla de símbolos en Go? nuevo lenguaje
- 21. ¿Por qué los refs aumentan 2 por cada nuevo objeto en Python?
- 22. Combinar 2 DataTables y almacenar en uno nuevo
- 23. ¿Está probando propiedades QuickCheck contra varios tipos?
- 24. Si Python 3 es el pitón más nuevo, ¿por qué todavía está Python 2?
- 25. ¿Usa las pruebas quickCheck con Cabal?
- 26. Estado de salida QuickCheck en fallas, y integración cabal
- 27. ¿Hay algún CMS/CMF construido en Zend Framework 2 todavía?
- 28. ¿Cómo puedo probar una función de orden superior con QuickCheck?
- 29. Qué hay de nuevo para los desarrolladores en SQL Server 2008 R2
- 30. ¿Existe una versión monádica de Arbitrary para usar con QuickCheck?
truco más fresco que he visto en toda la semana . –