QCheck vs SwiftCheck
QCheck
github.comSwiftCheck
github.comSide by side
| Figure | QCheck | SwiftCheck |
|---|---|---|
| Price from | Free | — |
| Free plan | Yes | — |
| Free trial | — | — |
| Open source | — | — |
| macOS | — | Yes |
| Linux | Yes | — |
| iOS | — | Yes |
| Plans published | 1 | 0 |
| Spec score · Property-Based Testing Tools | 7.9 (#9) | 6.5 (#27) |
| Counterexamples | Generators can be paired with printers and shrinkers to display and minimize counterexamples when a property fails. | When a generated test case fails, SwiftCheck shrinks the data toward a minimal counterexample. |
| Generators | QCheck includes combinators for constructing random generators, including generators for lists, arrays, recursive types, algebraic types, and tuples. | The library provides generator combinators for choosing values, filtering generated values, and composing generators. |
| Installation | QCheck can be installed through opam, and the README recommends qcheck-core for a minimal dependency set. | The README describes installation through Swift Package Manager, Carthage, CocoaPods, or by adding the Xcode project as a framework dependency. |
| Integrations | The project provides integration layers for OUnit and Alcotest, and the README describes using QCheck with Rely through an npm package. | The README documents installation through Swift Package Manager, Carthage, CocoaPods, or by adding the Xcode project as a framework. |
| License | The repository identifies its license as BSD-2-Clause and says the code is released under the BSD license. | SwiftCheck is released under the MIT license. |
| Purpose | QCheck is a QuickCheck-inspired property-based testing library for OCaml. | SwiftCheck is a Swift testing library that automatically generates random data to test program properties. |
Plans
In their own words
QCheck
QCheck is a property-based testing library for OCaml, inspired by QuickCheck. Rather than relying only on hand-picked examples, it provides combinators to generate values such as lists, arrays, tuples, recursive types, and algebraic types for checking properties. When a check fails, generators can be paired with printers and shrinkers to show and reduce counterexamples. QCheck2 builds shrinking into its generators, though the project describes that API as less battle-tested than QCheck. The package family includes qcheck-core, qcheck-ounit, qcheck-alcotest, qcheck, and ppx_deriving_qcheck; the last can derive generators from type declarations. Runner options include QCheck_base_runner in qcheck-core and QCheck_runner with OUnit compatibility in qcheck, with integration layers for OUnit and Alcotest. The project also points to qcheck-stm for sequential and parallel model-based tests and qcheck-lin for sequential consistency testing. Installation is available through opam, and the source can be built with make. The minimal qcheck-core package depends only on unix and dune. QCheck is free and licensed under BSD-2-Clause.