Kurva pembelajaran yang sangat dangkal (bahkan untuk Pengembang non-Groovy)
Integrasi DBUnit yang sangat kuat
Rupanya tidak ada dukungan untuk parameter (mengarah ke cerita yang sangat samar atau duplikasi antara teks dan kode (edit: sebenarnya ada tetapi dokumentasi untuk itu sangat tersembunyi.)
Cerita dan Kode sangat erat (file yang sama)
Keluaran laporan yang sangat mendasar
Tidak dapat mengaktifkan plugin IntelliJ
Komunitas tidak aktif (plugin Maven tampaknya telah rusak selama tiga bulan - tidak banyak contoh kode untuk digunakan)
+1: sejauh ini jawaban terbaik di sini. Menambahkan tautan.
haylem
35
"pro dan kontra" mungkin berbeda untuk orang yang berbeda. Saya biasanya melihat
kegiatan pengembangan , misalnya apakah rilis baru kemungkinan besar atau rilis terakhir berusia 2 tahun.
kematangan , misalnya sudah berapa lama, apakah ada tutorial dan bahkan mungkin buku tersedia. (Saya tidak membaca buku-buku ini, itu hanya tanda adopsi.)
dukungan alat , misalnya apakah ada plugin Eclipse, dukungan Ant, dll
ukuran dependensi , saya tidak suka kerangka kerja yang datang dengan segala sesuatunya sendiri. misalnya saya ingin memilih kerangka kerja mocking saya sendiri.
jenis lisensi , ini penting bagi saya karena persyaratan hukum di perusahaan tempat saya bekerja.
kompatibilitas dengan alat terkait , misalnya apakah menggunakan bahasa Gherkin atau tidak.
Dan dari beberapa kerangka kerja yang saya lihat
Insting buruk : aktivitas terakhir Mar 2010, bagus : Lisensi ASF
JDave buruk : dilengkapi dengan korek api dan olok-olok, bagus : aktivitas terakhir Jan 2011, lisensi ASF
easyb buruk : aktivitas terakhir Okt 2010, tidak yakin : menggunakan Groovy. Ini mungkin baik-baik saja, tetapi akan menjadi masalah untuk adopsi dalam kasus saya.
beanspec buruk : hanya satu versi pada tahun 2007, ini sudah mati
bdoc buruk : aktivitas terakhir Jan 2010, tidak yakin : sepertinya pergi ke arah lain, membuat laporan dari kode.
spock buruk : mungkin agak ekstrim, ini adalah kerangka pengujian lengkap, tidak hanya BDD, bagus : sangat aktif, sangat keren.
jbehave , "ibu" dari semua BDD di Java, buruk : sangat kuat = kompleks, lisensi tidak kompatibel (bagi saya), hadir dengan hampir semua pustaka pengujian dan banyak lagi, bagus : berdasarkan RSpec dan karenanya kompatibel, plugin gerhana, integrasi maven , komunitas yang sangat aktif
ginkgo4j , kerangka kerja BDD untuk Java juga didasarkan pada RSpec Ruby tetapi menggunakan lambda Java (bukan anotasi) untuk memungkinkan Anda membuat pengujian yang sangat kontekstual dan sangat mudah dibaca. Sederhana. Sangat kuat. Lisensi Apache 2 open source.
Mengenai ejekan: Anda pasti membutuhkan kerangka kerja yang mengejek juga. Kerangka kerja BDD hanya membantu Anda dalam menulis spesifikasi, tetapi beberapa pengujian memerlukan tiruan atau rintisan, khususnya. ketika Anda mendesain dari atas ke bawah (dari ikhtisar hingga detail).
Saya telah menemukan beberapa di antaranya di sini, tetapi saya tidak yakin mana yang harus dipilih.
Sungguh, lihat yang disebutkan di atas.
Apakah masuk akal untuk menggunakan kerangka kerja BDD jika saya sudah menggunakan pustaka tiruan (mis. Mockito)?
Jawaban singkatnya: ya, pasti. Sebenarnya, pengujian penerimaan menggunakan kerangka kerja BDD dan pengujian unit dalam isolasi menggunakan objek tiruan sangat berbeda sehingga saya tidak benar-benar mendapatkan pertanyaannya. Pengujian penerimaan adalah pengujian kotak hitam, pengujian digunakan untuk memverifikasi bahwa fitur bisnis berfungsi dan idealnya ditulis oleh analis bisnis. Pengujian unit secara terpisah menggunakan tiruan adalah pengujian kotak putih, pengujian digunakan untuk memverifikasi bahwa suatu unit berfungsi dan ditulis oleh pengembang. Keduanya adalah buty yang berguna, mereka memiliki tujuan yang sangat berbeda. Dengan kata lain, menggunakan Mockito tidak menggantikan kerangka BDD sama sekali dan kebalikannya juga benar.
Apa yang Anda katakan tidak salah, tetapi itu tidak berarti Anda tidak dapat menulis pengujian unit Anda dengan gaya yang lebih ramah BDD. Bukan spesifikasi dengan contoh, tetapi juga bukan fitur yang tidak berharga. docs.mockito.googlecode.com/hg/org/mockito/BDDMockito.html
cwash
7
Saya awalnya melakukan BDD saya dengan jUnit biasa tetapi saya telah melihat JDave belakangan ini karena hampir 1: 1 dari apa yang saya lakukan dengan jUnit. Ini juga berjalan di atas jUnit sehingga sudah berfungsi di Eclipse dan juga mudah dikonfigurasi untuk bekerja pada sistem integrasi berkelanjutan seperti Hudson. Tidak bisa membandingkannya dengan orang lain tetapi pengalaman saya dengan JDave sejauh ini bagus.
Oh dan bukan ide yang bodoh untuk menggunakan ejekan! Mereka tidak terikat pada TDD / BDD secara khusus, tujuannya adalah untuk meringankan beban pengujian secara umum.
Wah, saya lihat topiknya panas, banyak jawaban yang bagus ...
Ironisnya, saya baru-baru ini menemukan BDD dan menganggap konsepnya menarik. Hei, itu memaksa untuk menulis tes ... dan spesifikasinya! Walaupun kelihatannya mengejutkan, yang terakhir ini juga bisa hilang di beberapa proyek ... Atau hanya kurang presisi yang diperkenalkan oleh BDD.
Artikel Behavior Driven Development merangkum konsep dan tautan ke beberapa artikel bagus (seperti yang ditulis oleh Andrew Glover). Selain itu, untuk topik utas ini, ini memberikan daftar kerangka kerja BDD yang agak komprehensif (saya kira), banyak di antaranya untuk Java.
Itu tidak menyelesaikan masalah memilih kerangka kerja tetapi setidaknya itu akan memudahkan pencarian ...
Karena BDD sangat bergantung pada keterbacaan kode tes, saya kira kriteria pilihan yang baik adalah melihat tur / tutorial singkat dan melihat mana yang tampaknya lebih sesuai dengan gaya Anda. Kriteria lain dapat berupa fakta alat leverage kerangka kerja yang Anda kenal (pengujian unit, ejekan), penggunaan dengan IDE, dan sebagainya.
Saya mencoba Cucumber-JVM (sebelumnya dikembangkan sebagai Cuke4Duke). Ia menggunakan Gherkin DSL untuk spesifikasi, disimpan sebagai teks biasa.
Ini dapat dijalankan sebagai pengujian JUnit. Jadi satu-satunya masalah untuk mulai menggunakannya adalah membuat pebisnis atau Manajer Produk membaca / menulis fitur. Di Sources.
Tim saya telah menggunakan JBehave selama beberapa waktu. Ini menggunakan file teks biasa untuk menyimpan spesifikasi. Setiap langkah (Diberikan, Kapan, Kemudian) kemudian dijalankan dengan metode tertentu yang dapat mengekstrak parameter dari langkah tersebut. Skenario dapat diindentasi dan diformat dengan baik yang sangat membantu jika klien ingin memverifikasinya.
Ada beberapa masalah juga. Kami telah beralih ke Java 6. Terkadang beberapa langkah skenario diabaikan selama eksekusi. Ini dapat menyebabkan banyak masalah mencari tahu di mana bugnya.
@ Boris Mungkinkah masalah Anda adalah bahwa langkah-langkah PENDING dihitung sebagai lulus (perilaku default) bukannya gagal? Jika itu masalah Anda, Anda dapat mengonfigurasi PendingErrorStrategy: jarvana.com/jarvana/view/org/jbehave/jbehave-core/2.2.1/…
JeffH
3
Tim saya telah menggunakan JBehave dengan sukses - kami pindah ke sana setelah menggunakan EasyB dan menemukan bahwa file skenario teks biasa lebih mudah ditangani.
Jawaban:
Saya baru saja selesai membandingkan tiga kerangka kerja BDD untuk Java. Jelas temuan saya memiliki tanggal penggunaan-menurut yang cukup singkat.
Konkordion
EasyB
JBehave
Saya tidak memiliki kesempatan untuk mencoba Cuke4Duke dari JDave seperti yang saya inginkan, tetapi mungkin akan mendorong JBehave saat ini.
sumber
"pro dan kontra" mungkin berbeda untuk orang yang berbeda. Saya biasanya melihat
Dan dari beberapa kerangka kerja yang saya lihat
Mengenai ejekan: Anda pasti membutuhkan kerangka kerja yang mengejek juga. Kerangka kerja BDD hanya membantu Anda dalam menulis spesifikasi, tetapi beberapa pengujian memerlukan tiruan atau rintisan, khususnya. ketika Anda mendesain dari atas ke bawah (dari ikhtisar hingga detail).
sumber
Berikut adalah tautan menarik tentang Concordion vs. Cucumber dan Pengujian Penerimaan berbasis Java
Sungguh, lihat yang disebutkan di atas.
Jawaban singkatnya: ya, pasti. Sebenarnya, pengujian penerimaan menggunakan kerangka kerja BDD dan pengujian unit dalam isolasi menggunakan objek tiruan sangat berbeda sehingga saya tidak benar-benar mendapatkan pertanyaannya. Pengujian penerimaan adalah pengujian kotak hitam, pengujian digunakan untuk memverifikasi bahwa fitur bisnis berfungsi dan idealnya ditulis oleh analis bisnis. Pengujian unit secara terpisah menggunakan tiruan adalah pengujian kotak putih, pengujian digunakan untuk memverifikasi bahwa suatu unit berfungsi dan ditulis oleh pengembang. Keduanya adalah buty yang berguna, mereka memiliki tujuan yang sangat berbeda. Dengan kata lain, menggunakan Mockito tidak menggantikan kerangka BDD sama sekali dan kebalikannya juga benar.
sumber
Saya awalnya melakukan BDD saya dengan jUnit biasa tetapi saya telah melihat JDave belakangan ini karena hampir 1: 1 dari apa yang saya lakukan dengan jUnit. Ini juga berjalan di atas jUnit sehingga sudah berfungsi di Eclipse dan juga mudah dikonfigurasi untuk bekerja pada sistem integrasi berkelanjutan seperti Hudson. Tidak bisa membandingkannya dengan orang lain tetapi pengalaman saya dengan JDave sejauh ini bagus.
Oh dan bukan ide yang bodoh untuk menggunakan ejekan! Mereka tidak terikat pada TDD / BDD secara khusus, tujuannya adalah untuk meringankan beban pengujian secara umum.
sumber
Wah, saya lihat topiknya panas, banyak jawaban yang bagus ...
Ironisnya, saya baru-baru ini menemukan BDD dan menganggap konsepnya menarik. Hei, itu memaksa untuk menulis tes ... dan spesifikasinya! Walaupun kelihatannya mengejutkan, yang terakhir ini juga bisa hilang di beberapa proyek ... Atau hanya kurang presisi yang diperkenalkan oleh BDD.
Artikel Behavior Driven Development merangkum konsep dan tautan ke beberapa artikel bagus (seperti yang ditulis oleh Andrew Glover). Selain itu, untuk topik utas ini, ini memberikan daftar kerangka kerja BDD yang agak komprehensif (saya kira), banyak di antaranya untuk Java.
Itu tidak menyelesaikan masalah memilih kerangka kerja tetapi setidaknya itu akan memudahkan pencarian ...
Karena BDD sangat bergantung pada keterbacaan kode tes, saya kira kriteria pilihan yang baik adalah melihat tur / tutorial singkat dan melihat mana yang tampaknya lebih sesuai dengan gaya Anda. Kriteria lain dapat berupa fakta alat leverage kerangka kerja yang Anda kenal (pengujian unit, ejekan), penggunaan dengan IDE, dan sebagainya.
sumber
Saya mencoba Cucumber-JVM (sebelumnya dikembangkan sebagai Cuke4Duke). Ia menggunakan Gherkin DSL untuk spesifikasi, disimpan sebagai teks biasa.
Ini dapat dijalankan sebagai pengujian JUnit. Jadi satu-satunya masalah untuk mulai menggunakannya adalah membuat pebisnis atau Manajer Produk membaca / menulis fitur. Di Sources.
Hasil
sumber
Tim saya telah menggunakan JBehave selama beberapa waktu. Ini menggunakan file teks biasa untuk menyimpan spesifikasi. Setiap langkah (Diberikan, Kapan, Kemudian) kemudian dijalankan dengan metode tertentu yang dapat mengekstrak parameter dari langkah tersebut. Skenario dapat diindentasi dan diformat dengan baik yang sangat membantu jika klien ingin memverifikasinya.
Ada beberapa masalah juga. Kami telah beralih ke Java 6. Terkadang beberapa langkah skenario diabaikan selama eksekusi. Ini dapat menyebabkan banyak masalah mencari tahu di mana bugnya.
sumber
Tim saya telah menggunakan JBehave dengan sukses - kami pindah ke sana setelah menggunakan EasyB dan menemukan bahwa file skenario teks biasa lebih mudah ditangani.
sumber