Java için her Davranış Odaklı Geliştirme (BDD) çerçevesinin artıları ve eksileri nelerdir?
Örneğin bazılarını burada buldum .
Zaten bir alay kütüphanesi (örn. Mockito ) kullanıyorsam bir BDD çerçevesi kullanmak mantıklı olur mu?
Java için her Davranış Odaklı Geliştirme (BDD) çerçevesinin artıları ve eksileri nelerdir?
Örneğin bazılarını burada buldum .
Zaten bir alay kütüphanesi (örn. Mockito ) kullanıyorsam bir BDD çerçevesi kullanmak mantıklı olur mu?
Yanıtlar:
Java için üç BDD çerçevesini karşılaştırmayı yeni bitirdim. Elbette bulgularımın son kullanma tarihi oldukça kısa.
Cuke4Duke of JDave'yi istediğim gibi deneme şansım olmadı, ama muhtemelen şu anda JBehave için zorlayacağım.
"artılar ve eksiler" farklı insanlar için farklı şeyler olabilir. Genellikle bir bakarım
Ve bazı çerçevelerden baktım
Taklitlerle ilgili olarak: Kesinlikle bir alaycı çerçeveye de ihtiyacınız var. BDD çerçeveleri yalnızca özellikleri yazmanıza yardımcı olur, ancak bazı testler, özellikle taklitlere veya taslaklara ihtiyaç duyar. yukarıdan aşağıya tasarım yaparken (genel bakıştan detaylara).
Java ile kullanılacak en iyi BDD çerçevesi nedir? Neden? Her çerçevenin artıları ve eksileri nelerdir?
İşte Concordion vs. Salatalık ve Java tabanlı Kabul Testi hakkında ilginç bir bağlantı
Burada birkaç tane buldum ama hangisini seçeceğimi bilmiyorum.
Gerçekten, yukarıda bahsedilene bir bakın.
Zaten bir alay kütüphanesi (örn. Mockito) kullanıyorsam bir BDD çerçevesi kullanmak mantıklı olur mu?
Kısa cevap: evet, kesinlikle. Aslında, bir BDD çerçevesi kullanarak kabul testi ve sahte nesneler kullanarak izole edilmiş birim testi o kadar farklı ki soruyu gerçekten anlamıyorum. Kabul testi kara kutu testidir, testler bir iş özelliğinin çalıştığını doğrulamak için kullanılır ve ideal olarak iş analisti tarafından yazılır. Sahte kullanarak izole edilmiş birim testleri beyaz kutu testidir, testler bir birimin çalıştığını ve geliştiriciler tarafından yazıldığını doğrulamak için kullanılır. Her ikisi de yararlıdır ancak tamamen farklı amaçları vardır. Başka bir deyişle, Mockito kullanmak bir BDD çerçevesinin yerini almaz ve tersi de doğrudur.
Başlangıçta BDD'mi düz jUnit ile yaptım ama son zamanlarda JDave'ye bakıyorum çünkü jUnit ile yaptığım şeye neredeyse 1: 1. Ayrıca jUnit'in üzerinde de çalışır, bu nedenle zaten Eclipse üzerinde çalışır ve ayrıca Hudson gibi sürekli entegrasyon sistemlerinde çalışmak üzere yapılandırılması kolaydır. Bunu başkalarıyla gerçekten kıyaslayamıyorum ama JDave ile deneyimlerim şimdiye kadar iyiydi.
Oh ve taklit kullanmak asla aptalca bir fikir değildir! Özellikle TDD / BDD'ye bağlı değillerdir, amaçları genel olarak test yükünü hafifletmektir.
Vay canına, konunun sıcak olduğunu görüyorum, birçok güzel cevap ...
İroni bir yana, yakın zamanda BDD'yi keşfettim ve konsepti ilginç buldum. Hey, hem testleri hem de spesifikasyonları yazmaya zorluyor! Göründüğü kadar şaşırtıcı, ikincisi de bazı projelerde eksik olabilir ... Ya da BDD'nin sunmaya zorladığı hassasiyetten yoksun olabilir.
Kalkınma Odaklı Davranış makale bazı iyi makalelere kavramını ve bağlantılar özetlemektedir (Andrew Glover tarafından yazılmış gibi). Dahası, bu konunun konusuna gelince, BDD çerçevelerinin oldukça kapsamlı (sanırım) bir listesini veriyor, bunların çoğu Java için.
Çerçeve seçme problemini çözmez ama en azından aramayı kolaylaştıracaktır ...
BDD büyük ölçüde test kodunun okunabilirliğine dayandığından, hızlı turlara / öğreticiye bakmak ve hangisinin tarzınıza daha uygun olduğunu görmek için iyi bir seçim kriteri olduğunu düşünüyorum. Diğer kriterler, aşina olduğunuz bir çerçeve kaldıraç araçları (birim testi, alay etme), IDE ile kullanım ve benzeri olabilir.
Denedim Salatalık-JVM (daha önce Cuke4Duke olarak geliştirilen). Spesifikasyon için, düz metin olarak depolanan Gherkin DSL kullanır.
JUnit testi olarak çalıştırılabilir. Dolayısıyla, onu kullanmaya başlamak için tek sorun, iş adamlarının veya Ürün Yöneticisinin Kaynaklardaki .features'ı okumasını / yazmasını sağlamaktır.
Sonuçlar
Ekibim JBehave kullanıyor . Özellikleri depolamak için düz metin dosyaları kullanır. Her adım (Verilen, Ne Zaman, Sonra) daha sonra adımdan parametreleri çıkarabilen belirli bir yöntemle yürütülür. Senaryolar girintili ve iyi biçimlendirilmiş olabilir, bu da istemciler bunları doğrulamak isterse çok yardımcı olur.
Bazı sorunlar da var. Java 6'ya geçtik. Bazen bazı senaryo adımları yürütme sırasında göz ardı edilir. Böceğin nerede olduğunu bulmak çok fazla soruna neden olabilir.
Ekibim JBehave'i başarıyla kullandı - EasyB'yi kullandıktan sonra ona geçtik ve düz metin senaryo dosyalarını daha kolay ele aldık.