Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Behat over Cucumber in PHP

Tags:

php

bdd

behat

Don't get me wrong. I think both projects are fantastic.

But as both php and ruby developer I wonder if there are there any compelling reasons, besides possible language barrier, why would one choose Behat over Cucumber (with cuke4php) for BDD even when working with php or some php framework.

like image 625
Krule Avatar asked Feb 09 '11 13:02

Krule


People also ask

What is cucumber Behat?

Cucumber is a tool that supports Behaviour-Driven Development (BDD) - a software development process that aims to enhance software quality and reduce maintenance costs. Behat and Cucumber belong to "Testing Frameworks" category of the tech stack. Behat and Cucumber are both open source tools.


2 Answers

I'm a Behat developer.

Why I've developed Behat instead of Cucumber customization:

  1. Speed. There's no simple way to bootstrap/run PHP from Ruby code. This means that you need to implement wires/proxies and other things, which makes your tests insanely slower. And slower tests is not a test, it's just code that eats your customer's money.
  2. Extensibility. There are very few PHP developers that really know Ruby. It's a hard to use tool, that many don't understand! All examples written for Cucumber are Ruby code and you even can't look at Cucumber sources, because, let's say, you don't know Ruby. It's like buying a submarine when you just need a taxi.

In terms of features, Behat and Cucumber are almost the same (I've worked hard to achieve this). But in terms of speed/extensibility/logic from a PHP developer's perspective - Behat is better, because it's a fast and clean native PHP tool. Behat is not a Cucumber port, as you might think by first, it's built entirely from the ground on PHP 5.3. Behat is trying to simulate Cucumber with its input reading (features) and output formatting (formatters), but it's not a Cucumber port (there are no Ruby syntax constructions in PHP).

like image 68
everzet Avatar answered Sep 21 '22 13:09

everzet


Yet another reason why you may need Behat is explained here: https://cucumber.io/blog/bdd/when-cucumbers-go-bad/

If you have PHP project, you may want to create context for internals testing (domain layer, application layer).

like image 45
Misanthrope Avatar answered Sep 21 '22 13:09

Misanthrope