Saya telah membaca di mana-mana tentang betapa hebatnya mereka, tetapi untuk beberapa alasan saya sepertinya tidak tahu bagaimana tepatnya saya harus menguji sesuatu. Bisakah seseorang mungkin memposting sepotong kode contoh dan bagaimana mereka akan mengujinya? Jika tidak terlalu merepotkan :)
php
unit-testing
testing
tdd
berangkat
sumber
sumber
Jawaban:
Ada "framework" ke-3, yang jauh lebih mudah dipelajari - bahkan lebih mudah daripada Simple Test, disebut phpt.
Primer dapat ditemukan di sini: http://qa.php.net/write-test.php
Edit: Baru saja melihat permintaan Anda untuk kode contoh.
Anggaplah Anda memiliki fungsi berikut dalam file bernama lib.php :
Sangat sederhana dan lurus ke depan, parameter yang Anda berikan, dikembalikan. Jadi mari kita lihat pengujian untuk fungsi ini, kita akan memanggil file pengujian foo.phpt :
Singkatnya, kami menyediakan parameter
$bar
dengan nilai"Hello World"
dan kamivar_dump()
menanggapi panggilan fungsi kefoo()
.Untuk menjalankan tes ini, gunakan:
pear run-test path/to/foo.phpt
Ini membutuhkan penginstalan PEAR yang berfungsi di sistem Anda, yang cukup umum dalam banyak situasi. Jika Anda perlu menginstalnya, saya sarankan untuk menginstal versi terbaru yang tersedia. Jika Anda membutuhkan bantuan untuk mengaturnya, silakan bertanya (tetapi sediakan OS, dll.).
sumber
run-tests
?Ada dua kerangka kerja yang dapat Anda gunakan untuk pengujian unit. Paling sederhana dan PHPUnit , yang saya suka. Baca tutorial tentang cara menulis dan menjalankan pengujian di beranda PHPUnit. Ini cukup mudah dan dijelaskan dengan baik.
sumber
Anda dapat membuat pengujian unit lebih efektif dengan mengubah gaya pengkodean Anda untuk mengakomodasi itu.
Saya sarankan untuk menjelajahi Blog Pengujian Google , khususnya posting tentang Menulis Kode yang Dapat Diuji .
sumber
Saya menggulung sendiri karena saya tidak punya waktu untuk mempelajari cara orang lain melakukan sesuatu, ini membutuhkan waktu sekitar 20 menit untuk menulis, 10 untuk menyesuaikannya untuk posting di sini.
Unittesting sangat berguna bagi saya.
ini agak panjang tapi menjelaskan dirinya sendiri dan ada contoh di bawah.
Output ini:
sumber
Dapatkan PHPUnit. Sangat mudah digunakan.
Kemudian mulailah dengan pernyataan yang sangat sederhana. Anda dapat melakukan banyak hal dengan AssertEquals sebelum Anda masuk ke hal lain. Itu cara yang bagus untuk membasahi kaki Anda.
Anda mungkin juga ingin mencoba menulis tes Anda terlebih dahulu (karena Anda memberi pertanyaan Anda tag TDD) dan kemudian menulis kode Anda. Jika Anda belum pernah melakukan ini sebelumnya, ini adalah pembuka mata.
sumber
Untuk tes dan dokumentasi sederhana, php-doctest cukup bagus dan ini adalah cara yang sangat mudah untuk memulai karena Anda tidak perlu membuka file terpisah. Bayangkan fungsi di bawah ini:
Jika Anda sekarang menjalankan file ini melalui phpdt (command-line runner of php-doctest) 1 tes akan dijalankan. Doctest berada di dalam blok <code>. Doctest berasal dari python dan baik untuk memberikan contoh yang berguna & dapat dijalankan tentang bagaimana kode seharusnya bekerja. Anda tidak dapat menggunakannya secara eksklusif karena kode itu sendiri akan mengotori kasus uji tetapi saya telah menemukan bahwa itu berguna bersama dengan perpustakaan tdd yang lebih formal - saya menggunakan phpunit.
Jawaban ini 1st sini merangkum baik (itu bukan satuan vs doctest).
sumber
phpunit cukup banyak kerangka pengujian unit defacto untuk php. ada juga DocTest (tersedia sebagai paket PEAR) dan beberapa lainnya. php sendiri diuji untuk regresi dan sejenisnya melalui tes phpt yang juga dapat dijalankan melalui pir.
sumber
Tes codeception sangat mirip dengan tes unit umum tetapi jauh lebih kuat dalam hal-hal di mana Anda perlu mengejek dan mematikan.
Berikut adalah contoh uji pengontrol. Perhatikan betapa mudahnya stub dibuat. Seberapa mudah Anda memeriksa metode itu dipanggil.
Juga ada hal keren lainnya. Anda dapat menguji status database, sistem file, dll.
sumber
Selain saran bagus tentang framework pengujian yang telah diberikan, apakah Anda membangun aplikasi dengan salah satu framework web PHP yang memiliki pengujian otomatis bawaan, seperti Symfony atau CakePHP ? Terkadang memiliki tempat untuk memasukkan metode pengujian Anda mengurangi gesekan start-up yang diasosiasikan beberapa orang dengan pengujian otomatis dan TDD.
sumber
Terlalu banyak untuk memposting ulang di sini, tapi berikut adalah artikel bagus tentang penggunaan phpt . Ini mencakup sejumlah aspek seputar phpt yang sering diabaikan, sehingga layak dibaca untuk memperluas pengetahuan Anda tentang php lebih dari sekadar menulis tes. Untungnya artikel tersebut juga membahas tentang tes menulis!
Poin utama dari diskusi
sumber
Saya tahu sudah ada banyak info di sini, tetapi karena ini masih muncul di pencarian Google, saya mungkin juga menambahkan Chinook Test Suite ke daftar. Ini adalah kerangka pengujian yang sederhana dan kecil.
Anda dapat dengan mudah menguji kelas Anda dengannya dan juga membuat objek tiruan. Anda menjalankan pengujian melalui browser web dan (belum) melalui konsol. Di browser Anda dapat menentukan kelas pengujian apa atau bahkan metode pengujian apa yang akan dijalankan. Atau Anda bisa menjalankan semua tes.
Tangkapan layar dari halaman github:
Yang saya suka tentang ini adalah cara Anda melakukan pengujian. Ini dilakukan dengan apa yang disebut "pernyataan lancar". Contoh:
Dan membuat objek tiruan juga sangat mudah (dengan sintaksis seperti fasih):
Bagaimanapun, info lebih lanjut dapat ditemukan di halaman github dengan contoh kode juga:
https://github.com/w00/Chinook-TestSuite
sumber