Learn
← Previous Next →

Hari 28: Testing dengan PHPUnit Dasar

55 min Last updated 09 Apr 2026

Unit Testing

Unit test memastikan kode berfungsi benar. PHPUnit adalah framework testing PHP paling populer.

// src/Kalkulator.php
class Kalkulator {
    public function tambah(float $a, float $b): float { return $a + $b; }
    public function kurang(float $a, float $b): float { return $a - $b; }
    public function kali(float $a, float $b): float   { return $a * $b; }

    public function bagi(float $a, float $b): float {
        if ($b === 0.0) throw new \DivisionByZeroError("Tidak bisa bagi dengan nol");
        return $a / $b;
    }
}

// tests/KalkulatorTest.php
use PHPUnit\Framework\TestCase;

class KalkulatorTest extends TestCase {
    private Kalkulator $kalk;

    protected function setUp(): void {
        $this->kalk = new Kalkulator();
    }

    public function test_tambah(): void {
        $this->assertEquals(5, $this->kalk->tambah(2, 3));
        $this->assertEquals(0, $this->kalk->tambah(-1, 1));
    }

    public function test_bagi_nol(): void {
        $this->expectException(\DivisionByZeroError::class);
        $this->kalk->bagi(10, 0);
    }
}

// php vendor/bin/phpunit — jalankan test
💡 Testing membuat kamu percaya diri saat refactor kode. TDD (Test-Driven Development) menulis test dulu sebelum implementasi.

💡 Notice: Testing = safety net. Selalu write test untuk edge cases (nol, string kosong, nilai negatif).

Assignment

Simulasi testing tanpa PHPUnit: buat fungsi assert_equal($actual, $expected, $msg) yang echo "PASS: $msg" jika sama, "FAIL: $msg" jika berbeda. Buat class Kalkulator, test tambah(3,4)=7, kurang(10,3)=7, kali(3,3)=9.

Expected output:

PASS: tambah(3,4) = 7
PASS: kurang(10,3) = 7
PASS: kali(3,3) = 9
PHP index.php
Solution
Output