ยินดีต้อนรับกลับ.
มาต่อกันที่การทดสอบหน่วยของเรา
สิ่งหนึ่งที่ฉันสังเกตเห็นที่นี่คือเมื่อดูเอกสาร เรามีคำยืนยันอยู่จริง
ดังนั้น แทนที่จะพูดว่ายืนยันจริง ก็แค่ใช้การยืนยันเป็นตัวอย่าง ซึ่งเราให้ A และ B แทน วิธีการยืนยันทั้งหมดนี้
ไม่มีวิธีที่ถูกต้อง คุณสามารถใช้วิธีใดก็ได้ที่คุณต้องการเป็นเครื่องมือในการปรับปรุงโค้ดของคุณ
.
ในกรณีของฉัน ลองเปลี่ยนสิ่งนี้เพื่อยืนยันเป็นตัวอย่างและแก้ไขปัญหานี้
แบบนี้.
ดังนั้นเพียงแค่ทำความสะอาดเล็กน้อย
ลองดูว่ามันใช้งานได้หรือไม่
ไม่เป็นไร.
ทุกอย่างยังดีอยู่
โอเค เรามาลองทำลายโค้ดของเรากันอีกครั้ง
ทุกอย่างจึงดูดี
แต่ถ้าเราทำอย่างอื่นล่ะ?
ถ้าเราทำอย่างไร?
สมมติว่าเพิ่มการทดสอบอื่นแล้วเราจะบอกว่าการทดสอบ
ทำของกันด้วย
โดยปกติคุณต้องการตั้งชื่อฟังก์ชันเหล่านี้ให้ดีขึ้นมาก ดังนั้นจึงมีคำอธิบายมากขึ้น
แต่ในกรณีของเรา นี่เป็นเรื่องปกติ เพียงเพื่อให้เราเห็นว่าพวกเขาทำงานอย่างไรในครั้งนี้
ลองทำการทดสอบแรมจะเท่ากัน
ไม่มีแล้วไง?
ตอนนี้ถ้าฉันเรียกใช้สิ่งนี้ เรามาเรียกใช้รหัสนี้อีกครั้ง
และอีกอย่าง คุณอาจสังเกตเห็นว่าฉันกำลังคัดลอกโค้ดในการทดสอบอย่างไร และคุณอาจคิดว่า เราจะทำให้มันง่ายขึ้นได้ไหม
และไม่พูดซ้ำตัวเอง
และคุณสามารถทำได้โดยสิ้นเชิงและทำให้สิ่งต่างๆ ง่ายขึ้นมาก
แต่เมื่อพูดถึงการทดสอบ เพราะพวกเขาไม่ได้เริ่มใช้งานจริง และนี่เป็นเพียงเพื่อการพัฒนา
คุณอยากได้แบบทดสอบที่อ่านง่ายจริง ๆ เพื่อให้คนอื่นเข้าใจการทดสอบของคุณ
เพราะเมื่อพูดถึงการทดสอบ ความสามารถในการอ่านมีความสำคัญจริงๆ
เราไม่สนใจว่าจะไม่พูดซ้ำและทำให้โค้ดของเรามีประสิทธิภาพ สวยงาม และมีขนาดเล็ก
ดังนั้นฉันจึงชอบเขียนแบบทดสอบที่อธิบายได้ชัดเจนจริงๆ
เอาล่ะ ในนี้ สมมุติว่า self, dot, assert equal and.
อืม นี่มันควรจะเป็นอะไร?
ในกรณีนี้ ฉันคาดว่าค่าจะผิดพลาด
ลองทำสิ่งนี้กัน
ฉันคาดหวังว่าผลลัพธ์จะเป็นค่าผิดพลาด
ฉันจะบันทึกและเรียกใช้การทดสอบของฉัน
เอาล่ะฉันได้รับอากาศ
มันบอกว่านี่เป็นข้อผิดพลาดประเภทในการโต้แย้ง
ต้องเป็นสตริง
และฉันให้มันเป็นประเภทที่ไม่ใช่
ไม่เป็นไร.
ดังนั้นสิ่งนี้จึงไม่สามารถจัดการได้อย่างถูกต้องเพราะมันใช้ไม่ได้กับ int ที่เราได้รับข้อผิดพลาดประเภท
แล้วเราจะแก้ไขได้อย่างไร?
เราจะปรับได้อย่างไรในกรณีที่เราได้รับพารามิเตอร์ที่ไม่ใช่ประเภท?
ก่อนอื่น ให้มันเป็นพารามิเตอร์เริ่มต้น
สมมติว่าพารามิเตอร์เริ่มต้นเป็นศูนย์
ถ้าฉันเรียกใช้สิ่งนี้
อีกครั้ง.
ฉันยังคงได้รับข้อผิดพลาด
เอาล่ะเรายังไม่ได้แก้ไข
อาร์กิวเมนต์จะต้องเข้มงวด
ไบเหมือนวัตถุหรือตัวเลขไม่ใช่ประเภท
ดังนั้นเราจึงยังไม่ตรวจสอบประเภทที่ไม่ใช่
อีกอย่างที่เราทำได้คือพูด
ถ้าเลข.
เรากำลังตรวจสอบว่าเรามีค่าตัวเลขหรือไม่
เพราะอย่าลืมว่านี่จะเป็นค่าเริ่มต้นเป็นจริงหากมีตัวเลขหรือค่าใด ๆ แต่ถ้าไม่ใช่ประเภทก็จะเปลี่ยนเป็นเท็จ
ในนี้ถ้าตัวเลขเราสามารถบอกว่าส่งคืนนี่ได้
อื่น.
มิฉะนั้น เราจะกลับมา
โปรด.
ป้อนหมายเลข
ฉันจะพูดแบบนี้และตอนนี้เปลี่ยนสิ่งนี้เพราะตอนนี้เราควรคาดหวัง โปรดป้อนตัวเลขในการทดสอบของฉันและฉันจะบอกว่ายืนยันเท่ากับ
ผลลัพธ์นั้น
กำลังจะเป็น.
กรุณาใส่หมายเลข
ถ้าตอนนี้ฉันทำการทดสอบ มาเคลียร์กัน
อ๊ะ.
ดูเหมือนว่าฉันจะได้รับการทดสอบสองครั้งใน 0 วินาที แต่เรามีการทดสอบสามครั้งและนั่นเป็นเพราะ
คุณเห็นที่นี่ว่าฉันตั้งชื่อของฉันเหมือนกัน
จำไว้ว่า ถ้าคุณตั้งชื่อสิ่งเดียวกัน มันจะเรียกใช้เพียงหนึ่งในนั้น
ดังนั้นตรวจสอบให้แน่ใจว่าชื่อทดสอบทั้งหมดไม่ซ้ำกัน
ดังนั้นฉันจะดำเนินการนี้
ไม่เป็นไร.
ทำการทดสอบสามครั้งและทุกอย่างทำงานได้ดี
เยี่ยมมาก
คุณจะเห็นได้ว่าเราใช้ฟังก์ชันธรรมดาๆ ได้อย่างไร และเราเริ่มจับข้อผิดพลาดเหล่านี้
และเริ่มตระหนักว่าฟังก์ชันของเราง่ายเกินไปหากเราได้รับข้อมูลที่ไม่ถูกต้อง
ชอบ.
สตริงหรือประเภทที่ไม่ใช่
ทันทีที่เราทำอย่างนั้น หน้าที่ของเราล้มเหลว
ดังนั้นโดยใช้การทดสอบและการทดสอบและทำลาย ฉันสามารถปรับปรุงฟังก์ชันนี้ได้
จึงทนทานมากขึ้นเพื่อให้ตอนนี้ทำงานได้ดีขึ้นมากในการผลิต
ใช่ไหม
และนี่คือพลังของการทดสอบ
ช่วยให้เราตรวจสอบข้อผิดพลาดที่อาจเกิดขึ้นได้ เพราะบางทีเราอาจไม่เคยคิดจะทำอะไรแบบนี้ในตอนแรก
แต่ด้วยการเขียนการทดสอบควบคู่ไปกับโค้ดของเรา เราสามารถปรับปรุงฟังก์ชันได้
สิ่งสุดท้ายที่ฉันต้องการเพิ่ม
ลองเพิ่มอีกอันในการทดสอบและบอกว่าสิ่งนี้ทำเพื่ออะไรถ้าพารามิเตอร์การทดสอบเป็นเพียงสตริงว่าง?
เราควรจะได้รับ
กรุณากรอกตัวเลข
ดังนั้นถ้าฉันวิ่งนี้
ไม่เป็นไร.
การทดสอบสี่รายการกำลังผ่าน ดังนั้นดูเหมือนว่าโค้ดของเราจะทำงานได้ดี
เพื่อจบที่นี่ ฉันต้องการจะชี้ให้เห็นบางสิ่ง
ฉันกำลังโทรหาที่ Unit Test Main
แต่สิ่งนี้ไม่มีส่วนเกี่ยวข้องกับของจริง
ไฟล์.
ที่เราเขียนซึ่งเป็นไฟล์หลัก
ถ้าสมมุติว่าฉันเปลี่ยนชื่อนี้ ให้ไปที่เดสก์ท็อปของฉัน
และบอกว่าฉันต้องการเปลี่ยนสิ่งนี้เป็น
สคริปท์, ดอทพาย.
ตอนนี้ขอเปิดกรณีของฉันด้วยข้อความประเสริฐ
ลองกลับไปที่นี่
คุณจะเห็นว่านี่ pi หลักอยู่ด้วย ไม่มีอยู่แล้ว
มันขอให้ฉันบันทึก
นี่เป็นไฟล์ที่แตกต่างไปจากเดิมอย่างสิ้นเชิง
ตอนนี้ ถ้าฉันทำสคริปต์ที่นี่ และเพียงแค่เปลี่ยนอินสแตนซ์ทั้งหมดเป็นสคริปต์
ถ้าฉันบันทึกสิ่งนี้และตอนนี้ทำงาน
ยังคงใช้งานได้กับการทดสอบหน่วยบน Main เพียงแค่พูดว่า เฮ้ ทำการทดสอบทั้งหมดที่นี่
สิ่งหนึ่ง และนี่คือแนวปฏิบัติทั่วไปที่เราเคยพูดถึงมาก่อนคือ เพราะคุณต้องการบอกว่าให้รันไฟล์นี้
ถ้านี่คือไฟล์หลักที่กำลังรัน เพราะเราไม่ต้องการนำเข้า test main หรืออะไรทำนองนี้ ลงในไฟล์อื่นๆ
ไฟล์เหล่านี้เป็นไฟล์แต่ละไฟล์ที่ควรเรียกใช้เมื่อเราทำการทดสอบเท่านั้น
ฉันก็บอกได้เลยว่าถ้าขีดล่าง ขีดล่างชื่อ
เท่ากับ
ขีดล่าง ขีดเส้นใต้หลัก
จากนั้นรันโค้ดชิ้นนี้
ตอนนี้ถ้าฉันบันทึกและเรียกใช้
ไปเลย
ทุกอย่างยังคงทำงาน
แต่ตอนนี้ฉันแน่ใจว่านี่เป็นไฟล์ทดสอบ
และฉันจะรันโค้ดนี้เฉพาะในกรณีที่เป็นไฟล์ที่กำลังรัน หากเป็นไฟล์หลักที่กำลังรันอยู่
นี่เป็นวิธีมาตรฐานที่คุณจะทำการทดสอบหน่วยด้วยโมดูลการทดสอบหน่วย
พักก่อนแล้วค่อยพูดถึงการทดสอบในวิดีโอหน้ากัน