Selamat siang, kali ini saya ingin membagikan hasil belajar saya mengenai unit testing menggunakan PHPUnit di bahasa pemrograman PHP. Show
InstalasiJalankan perintah berikut untuk menginstall PHPUnit versi terbaru melalui composer
setelah itu install package XDebug melalui website https://xdebug.org/
Mengorganisir Unit TestUnit test sebaiknya diletakkan di folder
Note: Contoh konfigurasi dari PSR-0 di file
File hasil latihan saya dapat diakses melalui link berikut ini : nekoding/belajar-phpunit Repository belajar PHPUnit. Contribute to nekoding/belajar-phpunit development by creating an account on GitHub. GitHubnekodingAnda dapat mengirimkan pull request ke repository diatas apabila ingin menambahkan contoh unit testing lain. Konfigurasi Unit Testing menggunakan berkas XMLKonfigurasi PHPUnit bisa juga dilakukan menggunakan kode konfigurasi di XML. buat file dengan nama
atau juga bisa mengikuti format yang digunakan laravel
Contoh penulisan test case dasar
Penjelasan : kode kode Penamaan method unit testsecara default PHPUnit akan mendeteksi semua method yang memiliki nama awalan test didalam class yang melakukan extend dari class TestCase. contoh :
tapi kita juga bisa menambahkan annotation apabila nama method test case kita tidak ada awalan test nya
atau bisa juga seperti ini
Di PHPUnit tiap method unit test dapat berjalan meskipun salah satu method gagal / overlapping. Namun kita juga bisa mengeset agar kode unit test saling
menunggu. Jadi anggap saja kita punya 2 kode unit test yang bernama
pada kode diatas method Melompati test caseUntuk melompati test case kita dapat menambahkan kode ini ke dalam method test case yang dibuat
maka test case
contoh penggunaan dalam unit test
FixtureFixture adalah sebuah mekanisme dimana kita mengeset sebuah nilai state yang
nantinya akan digunakan dalam unit test. di PHPUnit ada 2 fungsi yang berhubungan dengan fixture ini yaitu SetUp Digunakan untuk mengeset nilai state sewaktu file unit test dipanggil.
TearDown Digunakan untuk menghapus nilai state apabila sudah tidak digunakan didalam unit test.
State yang sudah dibuat tadi sebenarnya juga bisa dishare ke method testcase lain.
Jika menggunakan kode diatas nilai $dbh hanya diset sekali saja
ketika class unit test terpanggil, sehingga method lain yang memerlukan $dbh tidak perlu menjalankan ulang fungsi Data providerData provider digunakan untuk mendefinisikan / mengisi parameter yang dibutuhkan oleh unit test. contoh :
kode diatas dapat diartikan bahwa method Menguji ExceptionsPHPUnit menyediakan api untuk melakukan testing terhadap nilai Exception. ada 2 cara untuk melakukan test terhadap exception :
apabila ingin menguji nilai dari error, warning, dan notices di PHP dapat menggunakan kode berikut
Melakukan test terhadap outputDisini kita dapat menguji nilai keluaran / hasil dari
Membuat mock / stub dari unit testDi PHPUnit kita dapat membuat hasil dari sebuah method di dalam suatu class agar sesuai dengan yang kita inginkan meskipun di method tersebut sudah ada return value yang didefinisikan.
atau jika ingin explicit bisa menggunakan Mock Builder API milik phpunit
Untuk lebih lengkapnya bisa mengunjungi link berikut ini 8. Test Doubles — PHPUnit 9.5 Manual code coverageAdalah mekanisme untuk melakukan analisa sejauh mana unit test telah dilakukan pada suatu class / object. Ada 6 metriks untuk mengukur code coverage :
Contoh code coverage pada unit test yang saya buat Contoh unit test sederhana yang saya buatReferensi : PHPUnit Manual — PHPUnit 9.5 Manual Apabila dari tulisan saya ada yang keliru atau kurang jelas bisa komen dibawah. Sekian terima kasih. Apa itu PHP unit testing?Unit Testing adalah tes terkecil dalam serangkaian test untuk menguji sebuah fungsi atau kelas pada kode kita. Sebenarnya, beberapa tahapan testing dalam pengembangan aplikasi.
Apa yang dimaksud dengan unit testing dan berfungsi untuk apa?Unit testing adalah metode yang masing-masing unit dari kode sumber diuji untuk menentukan apakah mereka cocok untuk digunakan. Unit tes pada dasarnya ditulis dan dieksekusi oleh pengembang perangkat lunak untuk memastikan kode yang memenuhi desain dan persyaratan dan berperilaku seperti yang diharapkan.
|