Pengujian unit untuk pengembangan plugin

17

Saya perlu menerapkan pengujian unit untuk salah satu plugin saya. Baru-baru ini saya mendesainnya ke dalam kelas, jadi pengujian unit seharusnya lebih mudah untuk diterapkan sekarang.

Apa sajakah strategi efektif untuk menguji unit plugin saya? Saya perlu cara untuk menggunakan fungsi WordPress yang digunakan dalam plugin, tetapi saya tidak perlu membutuhkan situs WordPress yang sedang berjalan (hanya menguji data pada DB AFAIK), bukan?

Saya mengalami kesulitan mencari tahu bagaimana hanya menguji unit plugin dan bukan plugin dalam konteks situs. Saya dapat menggunakan Selenium untuk ini, tetapi saat ini saya hanya ingin fokus pada unit yang menguji fungsionalitas kelas plugin, sehingga saya tidak memecahnya dengan setiap pembaruan.

Fernando Briano
sumber

Jawaban:

14

Sebagai seorang mantan insinyur perangkat lunak yang membangun tipe bisnis besar yang mendarat di agensi interaktif, izinkan saya memberi Anda beberapa pemikiran tentang pengujian ketika mengembangkan untuk Wordpress:

  1. Unit Testing Anda harus menguji jumlah perilaku terkecil yang dapat dilakukan oleh suatu kelas. Setiap kelas harus dapat diuji secara independen dari Wordpress. Jika Anda memiliki ketergantungan Wordpress, pertimbangkan untuk membuat objek tiruan dan / atau metode dalam pengujian Anda untuk mengatasinya. Pada akhirnya, ini akan mengubah cara Anda menulis kode sedikit - tetapi akan jauh lebih mudah diuji. Seperti biasa tidak ada makan siang gratis.

  2. Ketika Anda naik ke tingkat pengujian fungsional ini adalah di mana Anda dapat menguji kode Anda dengan dependensi Wordpress. Di sinilah Anda akan benar-benar menguji apakah plugin Anda benar-benar melakukan layanan yang seharusnya.

  3. Bergantung pada apa yang dilakukan plugin Anda - pertimbangkan untuk menggunakan tes berbasis Selenium yang menguji keberadaan data di DOM dengan menggunakan ID. Ini cukup kuat dan jauh lebih kecil kemungkinannya untuk memecah versi ke versi. Sekali lagi, triknya di sini adalah menganggap pengujian sebagai bagian dari siklus pengembangan perangkat lunak Anda. Perubahan besar dalam kode akan mengalir ke perubahan besar dalam tes Anda. Semua bagian dari biaya berbisnis.

Jika Anda memerlukan bantuan dengan alat apa pun untuk mencapai hal ini - saya akan dengan senang hati menjawab jika Anda membuka pertanyaan baru. Saya menggunakan PHPUnit dan ekstensi selenium dalam pekerjaan yang saya lakukan.

Ethan Seifert
sumber
1
Hai Ethan, terima kasih atas jawaban profesionalnya. Tidak dapat berharap lebih sedikit dari komunitas ini :) Saya akan mencoba menulis Tes Unit untuk kelas saya dan membuat beberapa objek tiruan untuk bekerja di sekitar fungsi WordPress. Langkah 2 adalah bagian yang sulit bagi saya, karena saya perlu memiliki instace WordPress untuk semacam pengujian otomatis, di mana saya bisa mulai menggunakan Selenium nanti. Saya akan mulai dengan PHPUnit dan melihat bagaimana hasilnya. Terima kasih!
Fernando Briano
Jawaban sempurna!
rsman
-1

Saya baru-baru ini membuat tutorial yang mengambil info dari googling saya, untuk menunjukkan caranya:

  1. Gunakan inti wordpress membuat unit test
  2. Sembunyikan peringatan usang / sesi php yang dikirim
  3. Tunjukkan cara mengatur opsi plugin Anda dalam pengujian
  4. Gunakan wp core make unit test yang sama untuk menguji beberapa plugin

Tutorialnya ada di sini , saya harap ini membantu

Daithí
sumber