Struktur Direktori Vendor PHPUnit: Panduan Teknis & Lokasi File

Struktur Direktori Vendor PHPUnit

Saat Anda menginstal PHPUnit melalui Composer, paket tersebut ditempatkan di dalam direktori vendor/phpunit/phpunit. Struktur ini mengikuti standar PSR-4 untuk autoloading kelas. Memahami hierarki ini krusial untuk debugging, konfigurasi runner, dan integrasi CI/CD.

Hierarki Direktori Utama

Berikut adalah pemetaan direktori standar pada instalasi PHPUnit versi 9.x hingga 11.x:

Direktori/FileDeskripsi Fungsi
src/Berisi kode sumber utama (source code) PHPUnit.
tests/Berisi unit test untuk PHPUnit itu sendiri.
vendor/Dependensi pihak ketiga yang dibutuhkan PHPUnit (seperti SebastianBergmann).
phpunitFile eksekusi (binary) untuk menjalankan test via CLI.

Analisis Komponen Inti

Di dalam direktori src/, terdapat modul-modul krusial yang membentuk ekosistem pengujian:

  • Framework/: Berisi kelas dasar TestCase yang Anda extend saat membuat test case.
  • Runner/: Mengatur siklus hidup eksekusi test, termasuk inisialisasi dan pembersihan.
  • Util/: Berisi utilitas pembantu seperti Printer, Configuration, dan Filter.
  • TextUI/: Menangani antarmuka baris perintah (CLI) saat Anda menjalankan perintah ./vendor/bin/phpunit.

Lokasi Binary dan Autoloading

Penting untuk dicatat bahwa file eksekusi utama PHPUnit sebenarnya berada di vendor/bin/phpunit. File ini merupakan symlink yang mengarah ke vendor/phpunit/phpunit/phpunit. Composer secara otomatis menghasilkan file vendor/autoload.php yang memetakan namespace PHPUnit\ ke direktori src/ tersebut.

Tips Troubleshooting Struktur

Jika Anda mengalami error 'Class not found' saat menjalankan test, pastikan hal berikut:

  1. Verifikasi keberadaan vendor/autoload.php.
  2. Pastikan file composer.json Anda memiliki konfigurasi autoload-dev yang benar untuk memuat direktori test Anda sendiri.
  3. Jalankan composer dump-autoload untuk memperbarui peta kelas jika Anda baru saja mengubah struktur namespace.

Selalu gunakan ./vendor/bin/phpunit alih-alih menginstal PHPUnit secara global untuk memastikan versi yang digunakan konsisten dengan dependensi proyek Anda.