อะไรคือข้อดีข้อเสียของแต่ละเฟรมเวิร์กBehavior Driven Development (BDD) สำหรับ Java
ฉันพบบางส่วนที่นี่เช่น
มันสมเหตุสมผลหรือไม่ที่จะใช้เฟรมเวิร์ก BDD หากฉันใช้ไลบรารีจำลอง (เช่นMockito ) อยู่แล้ว
อะไรคือข้อดีข้อเสียของแต่ละเฟรมเวิร์กBehavior Driven Development (BDD) สำหรับ Java
ฉันพบบางส่วนที่นี่เช่น
มันสมเหตุสมผลหรือไม่ที่จะใช้เฟรมเวิร์ก BDD หากฉันใช้ไลบรารีจำลอง (เช่นMockito ) อยู่แล้ว
คำตอบ:
ฉันเพิ่งเสร็จสิ้นการเปรียบเทียบ BDD framework สามตัวสำหรับ Java เห็นได้ชัดว่าการค้นพบของฉันมีวันที่ใช้งานค่อนข้างสั้น
ฉันไม่มีโอกาสได้ลอง Cuke4Duke ของ JDave อย่างที่ฉันชอบ แต่อาจจะผลักดันให้ JBehave ในเวลานี้
"ข้อดีข้อเสีย" อาจแตกต่างกันไปสำหรับแต่ละคน ฉันมักจะดูที่
และจากกรอบบางอย่างฉันได้ดู
เกี่ยวกับการล้อเลียน: คุณต้องมีกรอบการเยาะเย้ยเช่นกัน เฟรมเวิร์ก BDD ช่วยคุณในการเขียนข้อกำหนด แต่การทดสอบบางอย่างจะต้องมีการจำลองหรือต้นขั้วโดยเฉพาะ เมื่อคุณออกแบบจากบนลงล่าง (จากภาพรวมไปจนถึงรายละเอียด)
BDD framework ที่ดีที่สุดที่จะใช้กับ Java คืออะไร? ทำไม? แต่ละกรอบมีข้อดีข้อเสียอย่างไร
นี่คือลิงค์ที่น่าสนใจเกี่ยวกับConcordion vs. Cucumber และ Java based Acceptance Testing
ฉันเจอสองสามตัวที่นี่ แต่ไม่แน่ใจว่าจะเลือกอันไหนดี
จริงๆดูที่กล่าวไว้ข้างต้น
มันสมเหตุสมผลหรือไม่ที่จะใช้เฟรมเวิร์ก BDD หากฉันใช้ไลบรารีจำลอง (เช่น Mockito) อยู่แล้ว
คำตอบสั้น ๆ : ใช่แน่นอน อันที่จริงการทดสอบการยอมรับโดยใช้กรอบ BDD และการทดสอบหน่วยแยกโดยใช้วัตถุจำลองนั้นแตกต่างกันมากจนฉันไม่ค่อยได้รับคำถาม การทดสอบการยอมรับคือการทดสอบกล่องดำการทดสอบใช้เพื่อตรวจสอบว่าคุณลักษณะทางธุรกิจใช้งานได้จริงและเขียนโดยนักวิเคราะห์ธุรกิจ การทดสอบหน่วยแยกโดยใช้ล้อเลียนคือการทดสอบกล่องสีขาวการทดสอบใช้เพื่อตรวจสอบว่าหน่วยทำงานและเขียนโดยนักพัฒนา ทั้งสองอย่างมีประโยชน์ แต่มีวัตถุประสงค์ที่แตกต่างกันโดยสิ้นเชิง กล่าวอีกนัยหนึ่งการใช้ Mockito ไม่ได้แทนที่กรอบ BDD เลยและสิ่งที่ผกผันก็เป็นจริงเช่นกัน
เดิมทีฉันทำ BDD ด้วย jUnit ธรรมดา แต่เมื่อเร็ว ๆ นี้ฉันได้ดูJDaveเพราะมันเกือบ 1: 1 สำหรับสิ่งที่ฉันทำกับ jUnit นอกจากนี้ยังทำงานบน jUnit ดังนั้นจึงทำงานบน Eclipse อยู่แล้วและยังง่ายต่อการกำหนดค่าให้ทำงานกับระบบการรวมต่อเนื่องเช่น Hudson ไม่สามารถเปรียบเทียบกับคนอื่น ๆ ได้เลย แต่ประสบการณ์ของฉันกับ JDave นั้นดีมาก
โอ้และไม่เคยเป็นความคิดที่โง่เลยที่จะใช้ล้อเลียน! พวกเขาไม่ได้เชื่อมโยงกับ TDD / BDD โดยเฉพาะจุดประสงค์คือเพื่อลดภาระในการทดสอบโดยทั่วไป
ว้าวเห็นประเด็นร้อนคำตอบดีๆเยอะมาก ...
นอกจากนี้ฉันเพิ่งค้นพบ BDD และพบว่าแนวคิดนี้น่าสนใจ เฮ้มันบังคับให้เขียนทั้งการทดสอบ ... และข้อกำหนด! น่าแปลกใจที่อาจดูเหมือนว่าโครงการหลังอาจหายไปในบางโครงการ ... หรือขาดความแม่นยำที่ BDD บังคับให้แนะนำ
พฤติกรรมการขับเคลื่อนการพัฒนาบทความสรุปแนวคิดและการเชื่อมโยงไปยังบทความที่ดีบางอย่าง (เช่นที่เขียนโดยแอนดรูโกลเวอร์) ยิ่งไปกว่านั้นในหัวข้อของเธรดนี้จะให้รายชื่อเฟรมเวิร์ก BDD ที่ค่อนข้างครอบคลุม (ฉันคิดว่า) ซึ่งเป็นจำนวนที่ดีสำหรับ Java
มันไม่ได้ช่วยแก้ปัญหาในการเลือก framework แต่อย่างน้อยมันก็ช่วยให้การค้นหาง่ายขึ้น ...
เนื่องจาก BDD ต้องอาศัยความสามารถในการอ่านโค้ดทดสอบเป็นอย่างมากฉันจึงคิดว่าเกณฑ์ที่ดีในการเลือกคือการดูทัวร์ / บทช่วยสอนฉบับย่อและดูว่าอันไหนเหมาะกับสไตล์ของคุณมากขึ้น เกณฑ์อื่น ๆ อาจเป็นเครื่องมือที่ใช้ประโยชน์จากเฟรมเวิร์กที่คุณคุ้นเคย (การทดสอบหน่วยการเยาะเย้ย) การใช้งานกับ IDE และอื่น ๆ
ฉันลองใช้Cucumber-JVM (ก่อนหน้านี้พัฒนาเป็น Cuke4Duke) ใช้ Gherkin DSL สำหรับข้อกำหนดจัดเก็บเป็นข้อความธรรมดา
สามารถรันเป็นการทดสอบ JUnit ดังนั้นปัญหาเดียวในการเริ่มต้นใช้งานคือทำให้นักธุรกิจหรือผู้จัดการผลิตภัณฑ์อ่าน / เขียนคุณสมบัติใน Sources
ผล
ทีมของฉันใช้JBehaveมาระยะหนึ่งแล้ว ใช้ไฟล์ข้อความธรรมดาเพื่อจัดเก็บข้อมูลจำเพาะ ทุกขั้นตอน (ระบุเมื่อนั้น) จะถูกดำเนินการโดยวิธีการบางอย่างซึ่งสามารถดึงพารามิเตอร์ออกจากขั้นตอนได้ สถานการณ์สามารถเยื้องและจัดรูปแบบได้ดีซึ่งช่วยได้มากหากลูกค้าต้องการตรวจสอบ
มีปัญหาบางอย่างเช่นกัน เราได้เปลี่ยนไปใช้ Java 6 บางครั้งขั้นตอนสถานการณ์บางอย่างจะถูกละเว้นระหว่างการดำเนินการ อาจทำให้เกิดปัญหามากมายในการหาจุดบกพร่อง
ทีมของฉันใช้ JBehave อย่างประสบความสำเร็จ - เราย้ายไปใช้งานหลังจากใช้ EasyB และพบว่าไฟล์สถานการณ์ข้อความธรรมดาจัดการได้ง่ายขึ้น