// the find
BurntSushi/quickcheck
Automated property based testing for Rust (with shrinking).
A Rust port of Haskell's QuickCheck — property-based testing with automatic shrinking. You write properties, it generates random inputs, and when it finds a failure it shrinks it down to the smallest reproducing case. Aimed at Rust developers who want more than hand-written test cases.
Shrinking actually works well: the binary-search strategy on numbers and lists consistently produces minimal counter-examples rather than the enormous random blob that failed. The `Testable` trait design is clean — returning `TestResult` directly from a property to discard inputs is more explicit than Haskell's `==>` and easier to grep. The `#[quickcheck]` attribute macro removes boilerplate without hiding what's happening. Maintained by BurntSushi, so it's not going to be abandoned.
Shrinking is weaker than `proptest` — it's acknowledged in the README and the recommendation to switch is right there. If you're testing anything with complex structure (custom enums, nested types), you'll hit the limits quickly and spend time fighting it. No `Coarbitrary`, so you can't generate random functions, which cuts off a whole class of properties. Hard 8-parameter function limit is an arbitrary ceiling that will surprise you right when you don't want to refactor. The crate considers `Arbitrary` implementations to be internal details it can change in semver-compatible releases, meaning a minor version bump can legitimately break your test suite by finding new failures.