How to Start Testing in PHP with PHPUnit with a step-by-step guide.
Step 1: Install PHPUnit
Before you start writing tests, you need to install PHPUnit in your project.
You can install it globally using Composer:
composer global require phpunit/phpunit
Or install it locally for a specific project:
composer require --dev phpunit/phpunit
Once installed, you can confirm the installation by running:
./vendor/bin/phpunit --version
Step 2: Create a Sample Class to Test
Let’s create a simple Calculator
class that will add two numbers. This class will be the subject of our test.
// src/Calculator.php
class Calculator
{
public function add($a, $b)
{
return $a + $b;
}
}
Step 3: Create a PHPUnit Test Case
Next, create a test class to write tests for the Calculator
class. By convention, PHPUnit test files should end with Test.php
and be placed in a tests
directory.
// tests/CalculatorTest.php
use PHPUnit\Framework\TestCase;
class CalculatorTest extends TestCase
{
public function testAddition()
{
// Arrange: Create a new Calculator instance
$calculator = new Calculator();
// Act: Perform the add operation
$result = $calculator->add(2, 3);
// Assert: Verify the result is 5
$this->assertEquals(5, $result);
}
}
Part-by-Part Breakdown
Test Class:
The test classCalculatorTest
extendsTestCase
, which is the base class provided by PHPUnit. Every test class should inherit from this.Arrange:
In thetestAddition
method, we instantiate theCalculator
class. This step sets up everything needed for the test (commonly called the "arrange" phase).Act:
We call theadd()
method from theCalculator
class with values2
and3
. This is the action or the behavior we're testing.Assert:
Finally, we use theassertEquals()
method to verify that the output ofadd(2, 3)
is indeed5
. If the assertion is true, the test will pass; otherwise, it will fail.
Step 4: Running the Test
To run your tests, execute the following command in the terminal:
./vendor/bin/phpunit tests
If everything is set up correctly, you should see output similar to this:
PHPUnit 9.5.4 by Sebastian Bergmann and contributors.
. 1 / 1 (100%)
Time: 00:00.010, Memory: 4.00 MB
OK (1 test, 1 assertion)
Step 5: Expand the Test Case
Let’s add another method to test subtraction, and write a corresponding test case.
Update Calculator Class:
// src/Calculator.php
class Calculator
{
public function add($a, $b)
{
return $a + $b;
}
public function subtract($a, $b)
{
return $a - $b;
}
}
Update the Test Case:
// tests/CalculatorTest.php
use PHPUnit\Framework\TestCase;
class CalculatorTest extends TestCase
{
public function testAddition()
{
$calculator = new Calculator();
$result = $calculator->add(2, 3);
$this->assertEquals(5, $result);
}
public function testSubtraction()
{
$calculator = new Calculator();
$result = $calculator->subtract(5, 3);
$this->assertEquals(2, $result);
}
}
Step 6: Running All Tests
Run the tests again to ensure both the add
and subtract
methods work:
./vendor/bin/phpunit tests
If both tests pass, you should see:
PHPUnit 9.5.4 by Sebastian Bergmann and contributors.
.. 2 / 2 (100%)
Time: 00:00.010, Memory: 4.00 MB
OK (2 tests, 2 assertions)
Conclusion
Now you have a basic setup for testing in PHP using PHPUnit. Here's a quick recap of the process:
- Install PHPUnit using Composer.
-
Create your PHP class that you want to test (e.g.,
Calculator
). -
Write your test class extending
TestCase
with appropriate test methods. - Run the tests and see the results in your terminal.
By expanding this approach to cover more complex scenarios, you'll ensure your PHP code works as expected.
Top comments (0)