You'll likely use a few of the tools you referenced at the same time. It depends upon the project. As an example, for the Laracasts source, I use PHPSpec, PHPUnit, and Laravel's application testing features.
I've used Codeception and Behat before as well. A lot of this boils down to trying them out, and seeing what works for you.
-
Behat puts a lot of energy into conversation. So if you like the idea of translating conversations with your business/customer/client into executable code, you might want to check it out.
-
Codeception is more terse. There's no syntax like Gherkin, but you can still effectively test the same things. In fact, Codeception can handle unit tests, all the way up to acceptance tests.
-
PHPSpec is exclusively for designing objects. For integration testing, or anything higher level, you won't use it.
-
PHPUnit is great for designing objects, too, but it can also be used for basically everything. If you're just getting into this world, start here.
