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