Skip to content

Instantly share code, notes, and snippets.

@npryce
Last active July 29, 2024 08:38
Show Gist options
  • Save npryce/4147916 to your computer and use it in GitHub Desktop.
Save npryce/4147916 to your computer and use it in GitHub Desktop.
Property-Based Testing Tools

If you're coming to the Property-Based TDD As If You Meant It Workshop, you will need to bring a laptop with your favourite programming environment, a property-based testing library and, depending on the language, a test framework to run the property-based-tests.

Any other languages or suggestions? Comment below.

.NET (C#, F#, VB)

Python:

  • Factcheck -- requires a test framework (I like pytest), I wrote it (benefits - you can ask me about it, drawbacks - it's not very mature). Can be installed from PyPI with Pip or easy_install.
  • Hypothesis -- requires a test framework, provides decorators for easy integration
  • pytest-quickcheck - requires pytest, I found it hard to extend, and so wrote Factcheck

Ruby:

Scala:

Clojure:

Java:

Groovy:

  • Gruesome -- a quick and dirty implementation for Groovy

JavaScript:

@jlink
Copy link

jlink commented Jan 25, 2019

@moodmosaic
Copy link

.NET (C#, F#, VB): There's also Hedgehog.

@pragdave
Copy link

For Elixir and Erlang, there's https://github.com/pragdave/quixir

@flyingmutant
Copy link

Go has https://github.com/flyingmutant/rapid (written by me), which tries to provide most of Hypothesis goodness in idiomatic Go.

@sageserpent-open
Copy link

sageserpent-open commented Jul 29, 2024

Java and Scala - https://github.com/sageserpent-open/americium.

Two APIs specialised for each language, you can mix them up too.

Shrinkage is built-in, you don't write any custom shrinkage code. Shrinkage respects any invariants you set up in your generated test data.

Integrates with JUnit5, or can be used inline by tests using other test frameworks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment