วิธีเริ่มต้นใช้งาน TDD กับ Ruby on Rails [ปิด]


167

ฉันคุ้นเคยกับแนวคิด (เรียนการทดสอบในวิทยาลัย) แต่ฉันไม่แน่ใจว่าจะใช้งานได้อย่างไรเนื่องจากฉันไม่เคยทำงานในโครงการ TDD "ของจริง"

ฉันกำลังจะเริ่มต้นพัฒนาโครงการโดยใช้ Ruby on Rails (ส่วนใหญ่ใช้ 2.3) แอปพลิเคชั่นนี้จะใช้ในการจัดการข้อมูลผู้ใช้และไฟล์บางไฟล์ ในตอนแรกมันจะไม่ซับซ้อนเกินไป แต่อาจขยายได้มากใน 6 เดือนข้างหน้าดังนั้นฉันรู้สึกว่านี่เป็นเวลาที่เหมาะสมที่จะได้รับ TDD มากขึ้น

ฉันมีความคิดพื้นฐานเกี่ยวกับวิธีการทำ แต่ฉันยังต้องการตัวชี้และคำแนะนำ:

  • ฉันควรอ่านบทความ Ruby on Rails TDD 101 อย่างไร

  • ฉันต้องการทดสอบอะไร

  • ฉันควรใช้อัญมณี / ปลั๊กอินใด

  • ฉันควรใช้rspecหรือไม่ อื่น ๆ อีก?

  • เมื่อฉันมีคลาสทดสอบทั้งหมดของฉันฉันจะไปและปรับใช้อย่างไร (เช่น: การรวมอย่างต่อเนื่อง)

  • TDD ใช้เวลานานแค่ไหนจริงๆ?

  • ฉันจำเป็นต้องอ่านหนังสือเกี่ยวกับเรื่องนี้หรือฉันสามารถรับทุกอย่างเพียงแค่เล่นกับมันและอ่านบทเรียนออนไลน์หรือไม่? ถ้าฉันต้องอ่านหนังสือเล่มไหน


ฉันชอบการเรียนรู้จากตัวอย่างดังนั้นบางคนสามารถบอกฉันว่าฉันจะไปและใช้แนวทาง TDD เพื่อแก้ปัญหานี้ได้อย่างไร:

ฉันมี บริษัท ฉันมีที่อยู่ติดต่อ ผู้ติดต่อสามารถเชื่อมโยงกับ 1 บริษัท บริษัท สามารถมีผู้ติดต่อหลายคน ฉันต้องการสร้างวิธีในการสร้างผู้ติดต่อ บริษัท และเชื่อมโยงผู้ติดต่อกับ บริษัท

คุณไม่ต้องใช้ตัวอย่างนี้ในคำตอบของคุณ แต่มันจะช่วย :)

คำตอบ:


202

ฉันควรอ่านบทความ Ruby on Rails TDD 101 อย่างไร

ฉันจะเริ่มต้นด้วยคำแนะนำในการทดสอบการใช้งานรางแนวทางในการทดสอบการใช้งานราง

นอกจากนี้ยังRailscastมี screencasts ที่ดีบางอย่างเกี่ยวกับวิธีการใช้เครื่องมือทดสอบที่แตกต่างกัน

ฉันต้องการทดสอบอะไร

ฉันจะเริ่มต้นด้วยแบบจำลองเนื่องจากง่ายต่อการทดสอบ กฎง่ายๆคือคุณต้องครอบคลุมทุกคำสั่งถ้าในการทดสอบของคุณ

คุณควรทดสอบวัตถุประสงค์ของวิธีการ (เพื่อให้แน่ใจว่ามันทำงานได้ตามที่คาดไว้) รวมถึงขอบตัวพิมพ์เล็กทั้งหมด

ตรวจสอบให้แน่ใจว่าคุณไม่ได้ทำการทดสอบ

ฉันควรใช้อัญมณี / ปลั๊กอินใด ฉันควรใช้ rspec หรือไม่ อื่น ๆ อีก?

Test Unitเมื่อคุณเริ่มใช้เพียง คุณสามารถใช้rspecหรือcucumberหลังจากที่คุณคุ้นเคยกับพื้นฐาน

Autotestเป็นเครื่องมือที่ดีหากคุณต้องการทดสอบด้วยตัวเองอย่างแท้จริง แต่มันไม่จำเป็นต้อง 'ดี'

เมื่อฉันมีคลาสทดสอบทั้งหมดแล้วฉันจะไปและปรับใช้อย่างไร

ไม่แน่ใจเกี่ยวกับคำถาม โดยปกติคุณจะไม่ใช้การทดสอบ เมื่อคุณมีคลาสทดสอบทั้งหมดของคุณแล้วให้พิมพ์ 'rake test' เพื่อเริ่มการทดสอบทั้งหมด

TDD ใช้เวลานานแค่ไหนจริงๆ?

ช่วยประหยัดเวลาจริงๆ หากคุณชอบเกมไขปริศนาเขาวงกตคุณจะรู้ว่ามันง่ายกว่าที่จะแก้มันถ้าคุณไปตั้งแต่ต้นจนจบ เช่นเดียวกันกับ TDD หากไม่มีการทดสอบขับเคลื่อนคุณคิดอยู่เสมอว่า 'ฉันควรทำอย่างไรต่อไป' ด้วย Test Driven การทดสอบจะบอกคุณว่าต้องทำอย่างไรต่อไป (มันจะหยุดลงถ้าตรรกะไม่อยู่ที่นั่นดังนั้นคุณเพียงแค่ต้องแก้ไขส่วนที่ขาด) นอกจากนี้คุณยังมีข้อบกพร่องน้อยลงซึ่งจะช่วยให้คุณประหยัดเวลาได้มากในระยะยาว

ฉันจำเป็นต้องอ่านหนังสือเกี่ยวกับเรื่องนี้หรือฉันสามารถรับทุกสิ่งเพียงแค่เล่นกับมันและอ่านบทเรียนออนไลน์หรือไม่ ถ้าฉันต้องอ่านหนังสือเล่มไหน

คุณไม่ต้องการหนังสือ วิธีที่มีประสิทธิภาพที่สุดในการเรียนรู้ทุกสิ่งคือทำมัน กลับไปที่หนังสือหรือแหล่งข้อมูลออนไลน์เมื่อคุณพบคำถามหรือปัญหา นี่มันเปรียวเกินไป

ในตัวอย่างของคุณสิ่งที่ต้องทดสอบคือผู้ติดต่อสามารถเชื่อมโยงกับ 1 บริษัท บริษัท สามารถมีหลายผู้ติดต่อสร้างวิธีในการสร้างผู้ติดต่อและเชื่อมโยงผู้ติดต่อกับ บริษัท

class CompanyTest <Test::Unit
    def test_relationship # test associations/relationships
        c = companies(:some_company)
        assert_equal [a list of contacts], c.contacts # make sure a company can have multiple contacts
    end
end

class ContactTest<Test::Unit
   def  test_relationships
        c = contact(:some_contact)
        assert_equal some_company, c.company # make sure the contact link to 1 company
   end

   def  test_create/add
        # test create contacts, here you need to make sure the contact is created correctly, and linked to company correctly
   end
end

3
ลิงก์ไปยังบทความนั้นใช้งานไม่ได้ แต่พบได้ที่นี่: web.archive.org/web/20100325215651/http://bloritsch.d-haven.net/…
fivetwentysix

13

ฉันผลิตวิดีโอซีรีส์ 6 ตอนที่สอนในชั้นเรียนสาธารณะในซานฟรานซิสโกในช่วงฤดูร้อนปี 2010 วัสดุครอบคลุมการทดสอบและประสิทธิภาพของนักพัฒนาใน Rails 2.3 โดยใช้ RSpec 1.3 ลงวันที่เล็กน้อย แต่แนวคิดหลักนำไปใช้กับ Rails 3 กับ Rspec 2.x

http://www.rubyfocus.biz/class_video/2010/07/19/rails_tdd_class_1.html


9

ผมขอแนะนำหนังสือเล่มนี้: Ruby on Rails กวดวิชา เกือบเสร็จแล้ว หนังสือเล่มนี้ใช้ TDD ทั้งเล่ม ให้มันลอง!



5

TDD นั้นเกี่ยวกับการเขียนแบบทดสอบก่อน สิ่งนี้บังคับให้คุณเขียนไคลเอนต์ของคุณเองก่อนที่คุณจะเขียนรหัสแอปพลิเคชันของคุณ โดยทั่วไปวงจรจะเขียนการทดสอบสำหรับ API ที่ไม่มีอยู่ทำการทดสอบที่คาดว่าจะล้มเหลวไปเขียนรหัส API ของคุณทำการทดสอบอีกครั้งและตรวจสอบให้แน่ใจว่าผ่าน จากนั้นเขียนบททดสอบครั้งต่อไปของคุณ ... และอื่น ๆ

คุณอาจสนใจคู่มือรถไฟนี้



3

ฉันควรใช้อัญมณี / ปลั๊กอินใด

ฉันมีความสุขเสมอshoulda

TDD ใช้เวลานานแค่ไหนจริงๆ?

เหตุผลที่ฉันชอบการพัฒนา TDD เสมอคือมันมุ่งเน้นไปที่ฉันจะใช้โค้ดเฉพาะส่วน ฉันมีความรู้สึกพอสังเขปว่าเมื่อใดก็ตามที่ฉันยึดมั่นในหลักการของ TDD มากขึ้นฉันจะใช้เวลาทำงานน้อยลงในภายหลัง จำนวนเวลาที่ใช้ในการทดสอบหน่วย หากการทดสอบหน่วยไม่จับภาพพฤติกรรมที่คาดหวังเวลาที่ใช้ในการทดสอบจะสูญเปล่า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.