Test driven development (TDD) is a software development process that involves writing tests before writing the actual code. This approach helps to ensure that the code meets the desired requirements and that it works as expected.
How to write code in TDD style?
- Write a failing test: The first step in TDD is to write a test that checks for a specific behavior or requirement. The test should fail initially since no code has been written yet.
- Write the minimum code: The next step is to write the minimum amount of code that is required to make the test pass. This code should not include any additional functionality.
- Refactor: Once the test passes, it’s time to refactor the code to improve its quality and remove any duplication.
- Repeat the process: The above steps should be repeated for each new behavior or requirement.
Example of TDD with PHP and PHPUnit
Let’s consider a simple example of a calculator class that performs addition.
Step 1: Write a failing test
We will start by writing a failing test that checks whether the addition function of the calculator class returns the expected result.
Step 2: Write the minimum code
public function testAddition()
{
$calculator = new Calculator();
$result = $calculator->add(2, 2);
$this->assertEquals(4, $result);
}
The next step is to write the minimum amount of code that is required to make the test pass. In this case, we need to add an add
function to the Calculator
class.
class Calculator
{
public function add($a, $b)
{
return 4;
}
}
Step 3: Refactor
Now that the test passes, we can refactor the code to improve its quality and remove duplication. In this case, there is no code that needs to be refactored.
class Calculator
{
public function add($a, $b)
{
return $a + $b;
}
}
Step 4: Repeat the process
We can repeat the above steps to add more functionality to the calculator class.
Conclusion
TDD is a powerful technique that can help developers to write better quality code that meets the desired requirements. By following the steps outlined above, developers can write code in a test driven development style with PHP and PHPUnit.