DEV Community

MD ARIFUL HAQUE
MD ARIFUL HAQUE

Posted on

6

A Beginner’s Guide to Testing PHP Code with PHPUnit

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
Enter fullscreen mode Exit fullscreen mode

Or install it locally for a specific project:

composer require --dev phpunit/phpunit
Enter fullscreen mode Exit fullscreen mode

Once installed, you can confirm the installation by running:

./vendor/bin/phpunit --version
Enter fullscreen mode Exit fullscreen mode

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;
    }
}
Enter fullscreen mode Exit fullscreen mode

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);
    }
}
Enter fullscreen mode Exit fullscreen mode

Part-by-Part Breakdown

  1. Test Class:

    The test class CalculatorTest extends TestCase, which is the base class provided by PHPUnit. Every test class should inherit from this.

  2. Arrange:

    In the testAddition method, we instantiate the Calculator class. This step sets up everything needed for the test (commonly called the "arrange" phase).

  3. Act:

    We call the add() method from the Calculator class with values 2 and 3. This is the action or the behavior we're testing.

  4. Assert:

    Finally, we use the assertEquals() method to verify that the output of add(2, 3) is indeed 5. 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
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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;
    }
}
Enter fullscreen mode Exit fullscreen mode

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);
    }
}
Enter fullscreen mode Exit fullscreen mode

Step 6: Running All Tests

Run the tests again to ensure both the add and subtract methods work:

./vendor/bin/phpunit tests
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

Conclusion

Now you have a basic setup for testing in PHP using PHPUnit. Here's a quick recap of the process:

  1. Install PHPUnit using Composer.
  2. Create your PHP class that you want to test (e.g., Calculator).
  3. Write your test class extending TestCase with appropriate test methods.
  4. 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.

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay