SimpleTest vs PHPunit


127

Saya bertanya-tanya apakah ada orang yang memiliki pengalaman dalam kedua hal ini dapat menjelaskan perbedaan yang signifikan antara keduanya jika ada?

Adakah kekuatan khusus dari masing-masing yang membuatnya cocok untuk kasus tertentu?


Saya akan pergi untuk PHPUnit jauh lebih baik
joao baptista

9
... dan mengapa? Cobalah untuk menjelaskan jawaban Anda, berikan sumber / tautan / contoh.o
Manuel

<snark> Kenapa tidak keduanya? </snark>
Agi Hammerthief

Jawaban:


90

Pertanyaan ini cukup tanggal tetapi karena masih mendapatkan lalu lintas dan jawaban saya meskipun saya menyatakan maksud saya di sini lagi jadi saya sudah melakukannya pada beberapa pertanyaan (baru) lainnya.

Saya benar-benar bingung bahwa SimpleTest masih dianggap sebagai alternatif untuk phpunit. Mungkin saya hanya salah informasi tetapi sejauh yang saya lihat:

  • PHPUnit adalah standar; kebanyakan framework menggunakannya (seperti Zend Framework (1 & 2), Cake, Agavi, bahkan Symfony menjatuhkan Framework mereka sendiri di Symfony 2 untuk phpunit).
  • PHPUnit terintegrasi dalam setiap IDE PHP (Eclipse, Netbeans, Zend Stuide, PHPStorm) dan berfungsi dengan baik.
  • Simpletest memiliki ekstensi gerhana untuk PHP 5.1 (alias lama) dan tidak ada yang lain.
  • PHPUnit bekerja dengan baik dengan setiap server integrasi berkelanjutan karena ia mengeluarkan semua file log standar untuk cakupan kode dan laporan pengujian.
  • Simpletest tidak. Meskipun ini bukan masalah besar untuk memulai dengan itu akan menggigit Anda waktu besar setelah Anda berhenti "hanya menguji" dan mulai mengembangkan perangkat lunak (Ya pernyataan itu provokatif :) Jangan menganggapnya terlalu serius).
  • PHPUnit dipelihara secara aktif, stabil dan bekerja sangat baik untuk setiap basis kode, setiap skenario dan setiap cara Anda ingin menulis tes Anda.
  • (Subyektif) PHPUnit memberikan laporan cakupan kode yang lebih bagus daripada Simpletest
  • Dengan PHPUnit Anda juga mendapatkan laporan ini di dalam IDE Anda ( Netbeans , Eclipse, ...)
  • Juga ada beberapa saran untuk web interface to phpunit tests.

Saya belum melihat argumen yang mendukung SimpleTest. Ini bahkan tidak lebih mudah untuk menginstal karena PHPUnit tersedia melalui pir:

pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit

dan "tes pertama" terlihat hampir sama.

Seperti PHPUnit 3.7itu bahkan lebih mudah untuk menginstalnya hanya dengan menggunakanPHAR Archive

wget http://pear.phpunit.de/get/phpunit.phar
chmod +x phpunit-3.7.6.phar

atau untuk windows cukup mengunduh phar dan menjalankan:

php phpunit-.phar

atau ketika menggunakan komposer yang didukung, instal cara-cara seperti

"require-dev": {
    "phpunit/phpunit": "3.7.*"
}

ke komposer Anda. json.


Untuk semua yang ingin Anda uji PHPUnit akan memiliki solusi dan Anda akan dapat menemukan bantuan di mana saja (SO, #phpunit irc channel di freenode, hampir semua pengembang php;))

Harap perbaiki saya jika saya telah menyatakan sesuatu yang salah atau lupa sesuatu :)

Ikhtisar alat Pengujian PHP

Video: http://conference.phpnw.org.uk/phpnw11/schedule/sebastian-bergmann/

Slides: http://www.slideshare.net/sebastian_bergmann/the-php-testers-toolbox-osi-days-2011

Itu menyebutkan hal-hal seperti Atoum yang menyebut dirinya: "Kerangka kerja pengujian unit sederhana, modern dan intuitif untuk PHP!"


Pengungkapan penuh

Saya awalnya menulis jawaban ini Januari 2011 di mana saya tidak memiliki afiliasi dengan proyek Pengujian PHP. Sejak itu saya menjadi kontributor untuk PHPUnit.


5
Saya telah menemukan bahwa pengujian web simpletest jauh lebih mudah untuk diatur dan dijalankan daripada pengujian web phpunit. Karena itu merupakan keharusan dengan php, ini adalah kemenangan untuk proyek-proyek kecil hingga menengah, di mana Anda hanya ingin melemparkan kerangka pengujian dalam sekejap dan yang penting adalah tingkat pengujian sederhana. Sebagai contoh, tidak termasuk tes web, saya cenderung hanya menggunakan metode assertTrue () secara sederhana. Tes-web, tentu saja, menjadi lebih rumit, tetapi tidak harus berlebihan.
Kzqai

1
"> Karena itu adalah keharusan dengan php" - Saya sangat tidak setuju dengan ini. Aku belum pernah melihat setiap proyek php (atau kerangka kerja) yang menjalankan tes melalui browser. Ini menciptakan banyak masalah tanpa manfaat sebenarnya. Waktu di mana kode php dikembangkan pada sistem hosting bersama menggunakan sinkronisasi ftp sudah mati dan hilang ( semoga saja ) dan tidak, bahkan proyek kecil, membutuhkan server web yang sedang berjalan (paling banyak satu php dikirim keluar dari kotak). UNIT Menguji melalui browser dan bukan cli atau IDE hanyalah kasus penggunaan yang jarang sehingga saya pikir itu tidak penting sama sekali.
edorian

13
Alasan kuat untuk mempertimbangkan SimpleTest daripada PHPUnit adalah bahwa yang terakhir adalah alat baris perintah yang harus diinstal pada server yang menjalankan tes yang kadang-kadang jauh lebih sulit daripada hanya includemenyimpan file .PHP SimpleTest (seperti yang telah dijelaskan oleh orang lain.) Untuk programmer profesional membangun lingkungan pengujian mereka sendiri PHPUnit terdengar sulit dikalahkan tetapi jika mengintegrasikan sistem pengujian ke aplikasi open-source berbasis PHP di mana "pengembang" untuk aplikasi mungkin yang terbaik (apa yang saya sebut) "programmer kerja" maka kesederhanaan SimpleTest memiliki daya tarik yang nyata, bagi saya. FWIW.
MikeSchinkel

2
@MikeSchinkel Saya sangat setuju. Kami menggunakan SimpleTest sebagai solusi pengujian berbasis browser terintegrasi untuk kerangka kerja aplikasi khusus kami. Itu selalu tersedia, dan tidak memerlukan konfigurasi instalasi di luar tarikan svn karena termasuk dalam sumber kerangka kerja. Kami pindah ke PHPUnit untuk integrasi CIS. Karena kami adalah toko Windows, PHPUnit dapat menjadi mimpi buruk untuk diinstal dan dikonfigurasi, dan banyak dari pengembang junior kami hanya merusak lingkungan atau kehilangan kemauan untuk menguji.
Gavin

1
Tautan ke slide rusak.
Dmitri Zaitsev

35

Saya lebih suka PHPUnit sekarang, tetapi ketika saya mulai saya menggunakan SimpleTest karena saya tidak selalu memiliki akses ke baris perintah. SimpleTest bagus, tetapi satu-satunya hal yang benar-benar dimiliki lebih dari PHPUnit, menurut pendapat saya, adalah pelari web.

Alasan saya menyukai PHPUnit adalah karena ia terintegrasi dengan alat pengembang PHP lainnya seperti phing (seperti halnya SimpleTest), phpUnderControl , dan Xinc . Pada versi 3.0 memiliki dukungan mengejek , sedang dikembangkan secara aktif, dan dokumentasi sangat baik.

Sungguh satu-satunya cara untuk menjawab pertanyaan ini untuk diri sendiri adalah dengan mencoba keduanya untuk sementara waktu, dan melihat mana yang lebih sesuai dengan gaya Anda.

EDIT: Phing sekarang terintegrasi dengan SimpleTest juga.


4
Sekadar catatan, situs web phing mengatakan mendukung SimpleTest
philfreo

18
  • Saya TIDAK bisa mengerti cara mengunduh dan menginstal PHPUnit.
  • Namun, saya dapat dengan mudah memahami cara menginstal SimpleTest.

    (Sejauh yang saya ingat instruksi untuk PHPUnit mengatakan sesuatu di sepanjang baris "instal melalui PEAR dan kami tidak akan memberikan instruksi tentang cara melakukannya dengan cara lain") lihat:

  • http://www.phpunit.de/manual/current/en/installation.html

Untuk SimpleTest , cukup unduh dan arahkan dari kode Anda.

Jadi Simpletest menang untukku.


4
Saya kira dokumentasi telah berubah sejak Anda memposting jawaban Anda. Hari ini, Anda cukup mengetik 3 perintah dan itu akan diinstal, Anda bahkan tidak perlu mengunduh apa pun.
Anti Veeranna

5
Anda dapat menginstal PHPUnit melalui PEAR, mengunduhnya secara manual, atau menarik kode terbaru dari github. Ada tautan yang jelas ke petunjuk pemasangan di beranda. SimpleTest hanya memberi saya satu opsi, menunjuk ke sourceforge dan segudang iklan ...
Potherca

1
Di bawah Windows, PHPUnit sulit dipasang. Saya harus menginstalnya di 2 workstation. Yang pertama memakan waktu 3 jam, dengan bantuan chanel PEAR IRC. Untuk yang kedua (OS yang sama) saya tidak pernah berhasil. Yang mengatakan, di Linux itu pesona.
FMaz008

1
SimpleTest +1 Mudah dipasang Mudah digunakan. PHPUnit lebih kuat daripada, paling sederhana untuk memenuhi kebutuhan saya.
Cheung

Hal-hal mungkin telah berubah sejak '09, tetapi PHPUnit diinstal dalam hitungan detik hanya dengan beberapa perintah pada Windows.
Cypher


13

Setengah dari poin yang disebutkan dalam jawaban yang diterima sama sekali tidak benar:

SimpleTest punya

  • pengaturan yang lebih mudah (ekstrak ke folder, sertakan dan jalankan)
  • cukup periksa folder ke kontrol versi (coba lakukan itu dengan phpunit saat ini :))
  • lebih sedikit ketergantungan dan banyak ekstensi (webtester, formtester, auth)
  • reporter liputan kode yang baik, yang mudah diperluas (titik, nama fungsi, warna)
  • ringkasan cakupan kode (akhirnya mendarat di PHPUnit 4.x)
  • pelari web yang layak dan pelari web ajax, dengan grup dan eksekusi file tunggal
  • alat diff masih lebih baik (tanpa spasi putih atau masalah baris baru)
  • adaptor / pembungkus untuk menjalankan SimpleTests oleh phpUnit dan sebaliknya
  • kompatibilitas PHP5.4 +

Kelemahan:

  • bukan standar industri (PHPUnit)
  • tidak dipelihara secara aktif

1
Masih berguna bagi saya dan bos saya server php4 ^^ "
javier_domenech

Terima kasih. Saya telah memutakhirkan basis kode SimpleTest untuk bekerja dengan versi PHP yang lebih baru dan beberapa tweak lagi masuk sepanjang tahun. - PHP4 adalah EOL sejak lama dan tidak mendapatkan patch keamanan. Saya tidak akan menggunakannya pada layanan eksternal lagi. Anda harus meyakinkan bos Anda untuk mengizinkan pembaruan berjalan setidaknya ke v5.5 atau lebih baik v5.6
Jens A. Koch

Saya kenal Jens, terima kasih untuk nasehatnya. Solusi pengujian yang sangat bagus milik Anda
javier_domenech

1
=) Terima kasih telah menunjukkan repo Github kepada saya. Saya sudah mulai khawatir tentang "sedikit tidak terpelihara". Hanya secara dangkal, ingatlah, karena masih melakukan semua yang pernah saya inginkan dari kerangka uji rendah kerepotan dengan kode modern yang saya gunakan.
jeteon

SimpleTest memiliki lebih banyak fleksibilitas dalam cara Anda mengatur suite pengujian Anda karena Anda dapat melakukan semuanya dalam kode php. Jadi Anda memiliki bahasa pemrograman lengkap yang Anda inginkan, bukan hanya file konfigurasi xml dan parameter terminal. PHPUnit mungkin lebih didukung oleh alat, tetapi mengatakan lebih banyak tentang bagaimana komunitas PHP terus memilih untuk mendukung hal-hal yang lebih rendah.
still_dreaming_1

8

Saya menemukan SimpleTest bahkan lebih mudah daripada mengatur PHPUnit. Ekstrak saja dan Anda siap melakukannya. Manfaatnya adalah jika Anda bekerja di lebih dari satu mesin, karena Anda dapat menyimpan keseluruhan kerangka pengujian dengan cara yang sama seperti kode sumber Anda, dan dengan demikian tahu bahwa Anda menggunakan kode kerangka kerja yang sama. Apalagi jika Anda memodifikasinya dengan cara apa pun.

Jadi, saya akan mengatakan bahwa kekuatan SimpleTest adalah bobotnya yang sangat ringan dan portabel.

SimpleTest juga dikirimkan dengan GUI HTML yang sangat sederhana, yang cukup mudah diperluas jika Anda mau. Sejauh yang saya tahu, PHPUnit tidak termasuk GUI HTML, tetapi ada GUI: tersedia untuk diunduh, seperti Cool .


Ah, laki-laki aku membatalkan ini sepenuhnya oleh kecelakaan dan bahkan tidak menyadarinya sampai hari berikutnya. Sekarang suara saya dikunci ... Maaf.
still_dreaming_1

8

Yah saya membuat pelari ujian UI berbasis web phpUnit dan membuatnya tersedia di sourceforge. Menggunakan ajax dan memiliki antarmuka yang cukup keren juga jika Anda ingin mencobanya, periksa di sourceforge. Nama proyeknya adalah phpunitwebui dan situs webnya adalah http://phpunitwebui.sourceforge.net/


4

Seperti yang telah ditunjukkan, sebagian besar merupakan pilihan preferensi, karena keduanya akan menjalankan tes yang Anda tulis untuk itu dan melaporkan hasilnya.

UI web Simpletest sangat berguna, tetapi terkadang juga menjadi rumit. Dalam proyek saya saat ini, saya harus memasukkan lebih banyak pekerjaan ke dalam sistem untuk membuat aplikasi saya (API) berfungsi dengan antarmuka web (mengatur apache dengan benar, menyalin file ke root public_html, dll.) Daripada seharusnya untuk hanya menjalankan phpunit dari ruang kerja gerhana. Karena itu saya memilih PHPUnit. Juga, penggunaan PEAR adalah nilai tambah yang besar karena Anda tidak perlu melacak pembaruan secara manual. Cukup jalankan pear upgradesesekali dan PHPUnit akan terus diperbarui.


Saya tidak mendapatkan analisis ini. Apakah Anda mengatakan Anda menguji fungsionalitas tipe browser melalui plugin eclipse untuk phpunit, alih-alih pengaturan apache lokal?
Kzqai

Tidak, saya mengatakan bahwa dalam proyek saya, karena tidak ada fungsionalitas tipe browser, saya menggunakan phpunit melalui gerhana.
T0xicCode

2

Ini dari sudut pandang pengembang PHP yang sangat kasual:

Butuh waktu dua hari untuk memahami PHPUnit, kebanyakan mencoba untuk debug di bawah Eclipse yang akhirnya saya menyerah.

Butuh waktu dua jam untuk menyiapkan Simpletest termasuk debug di bawah Eclipse.

Mungkin saya akan menemukan kekurangan Simpletest di masa depan tetapi sejauh ini tidak baik apa yang saya butuhkan: TestClasses, benda tiruan, uji-kode debugging, dan antarmuka web untuk snapshot cepat situasi.

Sekali lagi: Ini dari sudut pandang pengguna PHP yang sangat kasual (bahkan pengembang :-)


1

Saya belum memeriksa Tes Sederhana untuk sementara waktu, terakhir kali memiliki plugin gerhana, yang merupakan faktor utama bagi saya, tetapi belum diperbarui untuk waktu yang lama. Sebastian Bergmann masih sangat aktif mengerjakan PHPUnit, tetapi masih kurang memiliki plugin yang bagus untuk gerhana - tetapi itu termasuk untuk Zend Studio yang baru.


1

Pertanyaan ini sudah lama, tetapi saya ingin menambahkan pengalaman saya: PHPUnit tampaknya menjadi standar sekarang, tetapi jika Anda bekerja dengan sistem lama yang menggunakan banyak dan banyak variabel global, Anda mungkin akan terjebak saat memulai. Sepertinya tidak ada cara yang baik untuk melakukan tes dengan vars global di PHPUnit, Anda tampaknya harus mengatur variabel Anda melalui $ GLOBAL yang TIDAK BAIK jika Anda memiliki banyak file pengaturan variabel global di mana-mana. OK, beberapa mungkin mengatakan bahwa masalahnya ada dalam sistem warisan tetapi itu tidak berarti kita tidak dapat melakukan tes pada sistem tersebut. Dengan SimpleTest hal seperti itu sederhana. Saya kira jika PHPUnit memungkinkan kita untuk memasukkan file secara global, tidak dalam lingkup kelas / fungsi maka itu tidak akan terlalu menjadi masalah juga.

Solusi lain yang menjanjikan adalah http://www.enhance-php.com , terlihat bagus :)


Saya selalu baru saja digunakan <phpunit backupGlobals="false">dalam config XML dan tidak pernah punya masalah dengan tes global ...
Potherca

@ mr1031011 tautan Anda tidak berguna. Mungkin maksud Anda ?: github.com/Enhance-PHP/Enhance-PHP
user12345

@Potherca ceritakan tentang hal itu - Saya awalnya punya banyak masalah dengan global dalam proyek kode warisan, dan saya pikir saya sudah mencoba semua penjelasan @backupGlobals @backupStaticAttributes @runInSeparateProcess @preserveGlobalState, global $xxxdan semua kombinasinya, sebelum mencoba --no-globals-backupdan tiba-tiba melihat semua bekerja seperti yang diharapkan. : D
conny

-2

ketika ada ribuan fungsi untuk diuji sekaligus, phpunit adalah cara untuk pergi, tes sederhana gagal karena berbasis web.

Saya masih menggunakan web sederhana untuk uji skala kecil.

Tapi keduanya bagus


SimpleTest adalah tidak murni berbasis web. Saya telah menggunakannya secara eksklusif dari baris perintah hingga sekarang.
jeteon
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.