ฉันเพิ่งมากับการประชุมต่อไปนี้สำหรับการตั้งชื่อการทดสอบของฉันชั้นเรียนของพวกเขาและมีโครงการเพื่อเพิ่ม descriptivenes ของพวกเขา:
ให้บอกว่าฉันกำลังทดสอบSettings
ชั้นเรียนในโครงการในMyApp.Serialization
namespace
ก่อนอื่นฉันจะสร้างโครงการทดสอบด้วยMyApp.Serialization.Tests
เนมสเปซ
ภายในโครงการนี้และแน่นอนเนมสเปซฉันจะสร้างคลาสที่เรียกว่าIfSettings
(บันทึกเป็นIfSettings.cs )
ให้บอกว่าฉันกำลังทดสอบSaveStrings()
วิธี -> CanSaveStrings()
ฉันจะตั้งชื่อการทดสอบ
เมื่อฉันรันการทดสอบนี้มันจะแสดงหัวข้อดังต่อไปนี้:
MyApp.Serialization.Tests.IfSettings.CanSaveStrings
ฉันคิดว่าสิ่งนี้บอกฉันได้ดีมากว่ามันคืออะไรการทดสอบ
แน่นอนว่ามันมีประโยชน์ว่าในภาษาอังกฤษคำนาม "การทดสอบ" เหมือนกับคำกริยา "การทดสอบ"
ความคิดสร้างสรรค์ของคุณไม่มีข้อ จำกัด ในการตั้งชื่อการทดสอบเพื่อให้เราได้รับส่วนหัวที่สมบูรณ์สำหรับพวกเขา
โดยปกติชื่อการทดสอบจะต้องเริ่มต้นด้วยคำกริยา
ตัวอย่างรวมถึง:
- ตรวจจับ (เช่น
DetectsInvalidUserInput
)
- พ่น (เช่น
ThrowsOnNotFound
)
- จะ (เช่น
WillCloseTheDatabaseAfterTheTransaction
)
เป็นต้น
ตัวเลือกอื่นคือการใช้ "ว่า" แทนที่จะเป็น "ถ้า"
อันหลังช่วยให้ฉันกดแป้นได้แม้ว่าและอธิบายเพิ่มเติมสิ่งที่ฉันกำลังทำอยู่เพราะฉันไม่รู้ว่าพฤติกรรมที่ทดสอบนั้นมีอยู่ แต่กำลังทดสอบว่ามันเป็นเช่นไร
[ แก้ไข ]
หลังจากใช้แบบแผนการตั้งชื่อข้างต้นนานขึ้นเล็กน้อยฉันพบว่าคำนำหน้าIfอาจสับสนเมื่อทำงานกับส่วนต่อประสาน มันเกิดขึ้นอย่างนั้นคลาสการทดสอบIfSerializer.csดูคล้ายกับอินเตอร์เฟสISerializer.csใน "Open Files Tab" สิ่งนี้จะทำให้เกิดความรำคาญเมื่อสลับไปมาระหว่างการทดสอบคลาสที่ทดสอบและอินเทอร์เฟซ ดังนั้นตอนนี้ฉันจะเลือกว่ามากกว่าถ้าเป็นคำนำหน้า
นอกจากนี้ตอนนี้ฉันใช้ - เฉพาะสำหรับวิธีการในชั้นเรียนทดสอบของฉันเพราะมันไม่ถือว่าเป็นแนวปฏิบัติที่ดีที่สุดที่อื่น - "_" เพื่อแยกคำในชื่อวิธีการทดสอบของฉันเช่นเดียวกับใน:
[Test] public void detects_invalid_User_Input()
ฉันพบว่ามันอ่านง่ายกว่า
[ สิ้นสุดการแก้ไข ]
ฉันหวังว่าสิ่งนี้จะวางแนวความคิดเพิ่มเติมเนื่องจากฉันคิดว่าการตั้งชื่อการทดสอบมีความสำคัญอย่างยิ่งเนื่องจากจะช่วยให้คุณประหยัดเวลาได้มากที่จะใช้เวลาพยายามทำความเข้าใจว่าการทดสอบกำลังทำอะไร (เช่นหลังจากกลับมาทำโครงการอีกครั้ง .