Den Dribbles

PHP Unit Testing

February 09, 2019

This is simply a basic example of the layout.

Ensure phpunit is downloaded and add it to your $PATH.

From, here run phpunit.phar path/to/test.php.

Basic example

Anagram function to test

<?php
// anagrams.php

function anagrams($a, $b)
{
    $regA = preg_replace("/[^a-z]/i", "", $a);
    $regB = preg_replace("/[^a-z]/i", "", $b);

    $regA = strtolower($regA);
    $splitA = str_split($regA);
    sort($splitA);

    $regB = strtolower($regB);
    $splitB = str_split($regB);
    sort($splitB);

    $resA = implode("", $splitA);
    $resB = implode("", $splitB);

    return $resA == $resB;
}

Running the test

phpunit.phar anagrams_test.php

<?php
// anagrams_test.php
require "anagrams.php";

class AnagramsTest extends PHPUnit\Framework\TestCase
{
    public function testAnagramsBasic()
    {
        $a = "tokyo";
        $b = "kyoto";
        $this->assertEquals(true, anagrams($a,$b));
    }


    public function testAnagramsWithCapitals()
    {
        // $this->markTestSkipped('Skipped.');
        $a = "Tokyo";
        $b = "kyoto";
        $this->assertEquals(true, anagrams($a,$b));
    }

    public function testAnagramsWithPunctuation()
    {
        // $this->markTestSkipped('Skipped.');
        $a = "To  35k 2@4yo";
        $b = "kYoTo223!!";
        $this->assertEquals(true, anagrams($a,$b));
    }
}

A personal blog on all things of interest. Written by Dennis O'Keeffe, Follow me on Twitter