14
votes

In various more functional based languages there are tools (like Quickcheck) which allow for property based testing.

How would I go about property based testing in PHP?

I would like to be able to specify the in and output properties of a PHP method, and run coverage tests.

2
"Quickcheck-style" in which regards? There are of course unit testing frameworks for PHP, but which features of Quickcheck are you specifically interested in?deceze
Deceze, I've added some more description. More info about Haskell's Quickcheck here: haskell.org/haskellwiki/Introduction_to_QuickCheckWard Bekker
Seriously, how is this "Off Topic"?Potherca

2 Answers

16
votes

There are currently two libraries that offer property based testing functionality in PHP:

  • Eris which is a PHP port based on Haskell's QuickCheck
  • PhpQuickCheck which is a PHP port based on clojure.test.check.

Eris has been build to work well with the PHPUnit ecosystem out-of-the-box.

PhpQuickCheck has been built to work standalone but can also be used in combination with PhpUnit and it's @dataprovider functionality. There is an example of this in the repository.

2
votes

You can have a go with the Faker library: https://github.com/fzaninotto/Faker. It won't do the testing for you, but it's great for generating the random data.