ScalaCheck is a Scala implementation of the QuickCheck 2 library for Haskell. It tries to keep the look and feel of QuickCheck as much as possible, while being open for improvements and extensions that can ease the task of property-based, randomized testing of Scala programs.
Unit properties are written directly in Scala, using combinators from the ScalaCheck library.
Properties are tested automatically, with test data generated by ScalaCheck. Data generation can be precisely controlled, and generation of custom data types is simple to define.
Failing test cases are minimised automatically, which makes pin-pointing error causes easier.
Support for stateful testing of command sequences, and minimization of failing command sequences.