Pengujian Unit Test Dengan PHP Unit
Kata pengantar
Unit Testing merupakan kumpulan tes yang berbeda pada kode Anda. Menulis tes unit bukanlah tugas yang sulit. Untuk berlatih pengujian unit, Anda memerlukan alat pengujian. Salah satu alat paling populer di dunia PHP adalah PHPUnit. Artikel ini akan melakukannya. Yang harus Anda lakukan adalah mengikuti seperangkat aturan. Buat kelas sederhana untuk pengujian dan kemudian integrasikan dengan PHPUnit.
Poin penting yang harus anda paham sebelum belajar PHP unit
- PHP
- OOP
- CLI Command pada Windows / Linux
- Composer
Mereka yang memahami empat poin di atas bisa melanjutkan step berikutnya. Buat folder bernama latihan-php-unit. Dalam hal ini, gunakan perintah cd untuk menavigasi ke direktori pelatihan menggunakan CLI masing-masing. Jika Anda menggunakan GUI / Window, silakan klik folder untuk melihatnya.
Instalasi unit PHP
Pertama, Anda memerlukan kerangka kerja PHPUnit. Halaman web PHPUnit dapat ditemukan di https://phpunit.de/. Saat ini PHPUnit telah mencapai versi 9. Sekarang, latihan ini menggunakan versi 8, yang terdaftar secara default di repositori Composer. Latihan-Buka folder php-unit dan jalankan perintah berikut di CLI.
composer require phpunit/phpunit
Tampilannya seperti ini:
Buka folder latihan-php-unit dan itu akan berisi folder composer.json, composer.lock, dan vendor. Sejauh ini, PHPUnit telah berhasil diinstal.
Seperti yang Anda lihat pada gambar di atas, saya menggunakan sublime untuk membuka folder.
Membuat kelas sampel
Di dunia nyata proyek, Anda sering membuat kelas. Ini bekerja secara asli atau menggunakan kerangka kerja. Misalnya, buat pengontrol, model, atau pustaka. Dalam kasus saat ini, saya memiliki perpustakaan yang ingin saya uji. Beri nama perpustakaan ini Wordcount.php. Ini berisi metode untuk menghitung jumlah kata dalam sebuah kalimat.
Buat file bernama Wordcount.php yang berisi kode berikut:
// File : WordCount.php
class Wordcount
{
public function countWords($sentence)
{
return count(explode(" ",$sentence));
}
}
?>
Apakah itu terlihat sederhana? Yang harus Anda lakukan adalah membagi string menjadi array, menghitung jumlah array tersebut, dan membuat metode yang disebut countWords yang mengembalikan nilai total.
Lakukan tes
Tidak butuh banyak waktu. Mari kita menulis beberapa kode tes. Untuk membuat tes, Anda memerlukan komponen kelas PHPUnit. Saat Anda menjalankan Komposer, komponen sudah terinstal di folder vendor.
Selanjutnya, buat file bernama SimpleTest.php dengan kode berikut di folder unit latihan-php.
// Path to run ./vendor/bin/phpunit --bootstrap vendor/autoload.php FileName.php
// Butuh Framework PHPUnit
use PHPUnit\Framework\TestCase;
// Class yang mau di TEST.
require_once "Wordcount.php";
// Class untuk run Testing.
class SimpleTest extends TestCase
{
public function testCountWords()
{
// Kita pakai class yang mau kita test.
$Wc = new WordCount();
// Kita masukan parameter 4 kata, yang harusnya dapat output 4.
$TestSentence = "My name is Joko"; // 4 Kata ..
$WordCount = $Wc->countWords($TestSentence);
// Kita assert equal, ekspektasi nya harus 4, jika benar berarti Wordcount berfungsi dengan baik.
$this->assertEquals(4, $WordCount);
}
}
Kode menggunakan komponen PHPUnit yang sudah ada di folder vendor. Selanjutnya, Anda juga membutuhkan kelas yang Anda buat sebelumnya, Wordcount.php.
Kode ini juga membuat kelas bernama SimpleTest yang memperluas TestCase PHPUnit. Untuk menggunakannya, Anda perlu membuat metode dengan setidaknya TestCase. Di sini, ini disebut testCountWords.
Bahkan, nama itu diserahkan kepada teman-teman Anda. Nama pada contoh di atas adalah nama yang paling relevan dengan kasus kita. Dalam metode testCountWords, buat instance kelas yang ingin Anda uji, lalu jalankan assertEquals.
Jalankan tes
./vendor/bin/phpunit --bootstrap vendor/autoload.php SimpleTest.php
Di sini kita memanggil program biner phpunit dan menginstruksikannya untuk menguji file SimpleTest.php yang kita buat sebelumnya. Ketika Anda menekan Enter / run, hasilnya terlihat seperti ini:
Perintah assertEqual membandingkan parameter pertama (keluaran yang diinginkan) dengan parameter kedua (eksekusi metode). Jika cocok, berarti tes berhasil. Imajinasi?
Bandingkan hasil yang diinginkan hanya dengan hasil dari kelas keluaran aktual yang Anda uji. Jika Anda memenuhi harapan Anda, kelas Anda berada di jalur yang benar. Jika hasil pengujian tidak sama, berarti kelas tersebut memiliki bug/kesalahan. String "Nama saya Joko" harus selalu menembalikan hasil 4.
Sejauh ini, kita telah berhasil mempelajari tes unit sederhana.