Menerapkan Unit Testing dengan PHPUnit

Menerapkan Unit Testing dengan PHPUnit

Menerapkan unit testing dengan PHPUnit adalah langkah penting untuk memastikan bahwa kode PHP Anda bekerja seperti yang diharapkan. Berikut adalah panduan langkah demi langkah untuk menggunakan PHPUnit:

1. Instalasi PHPUnit

PHPUnit dapat diinstal melalui Composer, cara yang paling umum dan mudah:

composer require --dev phpunit/phpunit

Setelah instalasi, Anda dapat menjalankan PHPUnit menggunakan perintah berikut:

./vendor/bin/phpunit

2. Struktur Proyek

Pastikan proyek Anda memiliki struktur yang jelas. Contoh struktur proyek:

project/
├── src/
│   └── Calculator.php
├── tests/
│   └── CalculatorTest.php
├── vendor/
├── composer.json
└── phpunit.xml

3. Konfigurasi PHPUnit

Buat file konfigurasi phpunit.xml di root proyek Anda untuk mengatur pengujian:

<phpunit bootstrap="vendor/autoload.php">
    <testsuites>
        <testsuite name="Unit Tests">
            <directory>tests</directory>
        </testsuite>
    </testsuites>
</phpunit>

4. Membuat Kode yang Akan Diuji

Sebagai contoh, buat file src/Calculator.php:

<?php

namespace App;

class Calculator
{
    public function add($a, $b)
    {
        return $a + $b;
    }

    public function subtract($a, $b)
    {
        return $a - $b;
    }
}

5. Membuat Tes Unit

Buat file tests/CalculatorTest.php untuk menulis tes unit:

<?php

use PHPUnit\Framework\TestCase;
use App\Calculator;

class CalculatorTest extends TestCase
{
    public function testAdd()
    {
        $calculator = new Calculator();
        $this->assertEquals(5, $calculator->add(2, 3));
        $this->assertEquals(0, $calculator->add(-1, 1));
    }

    public function testSubtract()
    {
        $calculator = new Calculator();
        $this->assertEquals(1, $calculator->subtract(3, 2));
        $this->assertEquals(-2, $calculator->subtract(-1, 1));
    }
}

6. Menjalankan PHPUnit

Jalankan PHPUnit dengan perintah:

./vendor/bin/phpunit

Hasil tes akan ditampilkan di terminal:

PHPUnit 10.x by Sebastian Bergmann and contributors.

..                                                                  2 / 2 (100%)

Time: 00:00.020, Memory: 4.00 MB

OK (2 tests, 4 assertions)

7. Mengelompokkan Tes

Anda dapat mengelompokkan tes menggunakan anotasi @group:

/**
 * @group math
 */
public function testAdd()
{
    $calculator = new Calculator();
    $this->assertEquals(5, $calculator->add(2, 3));
}

Untuk menjalankan grup tertentu:

./vendor/bin/phpunit --group math

8. Mocking dengan PHPUnit

PHPUnit mendukung mocking untuk mensimulasikan dependensi:

public function testWithMock()
{
    $mock = $this->createMock(SomeClass::class);
    $mock->method('someMethod')->willReturn('expectedValue');

    $this->assertEquals('expectedValue', $mock->someMethod());
}

9. Menyediakan Data dengan Data Providers

Gunakan data providers untuk menjalankan tes dengan berbagai set data:

/**
 * @dataProvider additionProvider
 */
public function testAdd($a, $b, $expected)
{
    $calculator = new Calculator();
    $this->assertEquals($expected, $calculator->add($a, $b));
}

public function additionProvider()
{
    return [
        [2, 3, 5],
        [-1, 1, 0],
        [0, 0, 0],
    ];
}

10. Menangani Error dan Exception

Pastikan kode Anda menangani exception dengan benar:

public function testException()
{
    $this->expectException(InvalidArgumentException::class);

    $calculator = new Calculator();
    $calculator->divide(1, 0);
}

Tips:

  • Gunakan CI/CD untuk menjalankan tes otomatis.
  • Pastikan coverage tes mencakup berbagai skenario.
  • Perbarui tes jika ada perubahan signifikan dalam kode.

Dengan menerapkan PHPUnit, Anda akan memiliki basis kode yang lebih stabil dan mudah dirawat.

Leave a Reply

Your email address will not be published. Required fields are marked *