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 classCalculatorTestextendsTestCase, which is the base class provided by PHPUnit. Every test class should inherit from this.Arrange:
In thetestAdditionmethod, we instantiate theCalculatorclass. This step sets up everything needed for the test (commonly called the "arrange" phase).Act:
We call theadd()method from theCalculatorclass with values2and3. 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
TestCasewith 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.
If you found this series helpful, please consider giving the repository a star on GitHub or sharing the post on your favorite social networks 😍. Your support would mean a lot to me!
![]()
If you want more helpful content like this, feel free to follow me:
Top comments (0)