สิ่งที่คุณอธิบายอาจไม่ได้เป็นสิ่งเลวร้าย แต่เป็นตัวชี้สำหรับปัญหาที่ลึกกว่าที่การทดสอบของคุณค้นพบ
เมื่อระบบมีการเปลี่ยนแปลงเราพบว่าเราใช้เวลามากขึ้นในการแก้ไขข้อผิดพลาด เรามีการทดสอบหน่วยการรวมและการทำงาน
หากคุณสามารถเปลี่ยนรหัสของคุณและการทดสอบของคุณจะไม่หยุดยั้งนั่นน่าสงสัยสำหรับฉัน ความแตกต่างระหว่างการเปลี่ยนแปลงที่ถูกต้องและข้อผิดพลาดเป็นเพียงความจริงที่มีการร้องขอสิ่งที่ร้องขอคือ (TDD สันนิษฐาน) กำหนดโดยการทดสอบของคุณ
ข้อมูลถูกเข้ารหัสอย่างหนัก
ข้อมูลที่เข้ารหัสยากในการทดสอบเป็นสิ่งที่ดี การทดสอบทำงานเป็นเท็จไม่เป็นข้อพิสูจน์ หากมีการคำนวณมากเกินไปการทดสอบของคุณอาจมีความซ้ำซ้อน ตัวอย่างเช่น:
assert sum([1,2,3]) == 6
assert sum([1,2,3]) == 1 + 2 + 3
assert sum([1,2,3]) == reduce(operator.add, [1,2,3])
ยิ่งคุณใช้ Abstraction มากเท่าไหร่คุณยิ่งเข้าใกล้อัลกอริธึมและยิ่งใกล้เคียงกับการเปรียบเทียบการใช้งานแบบเฉียบพลันกับตัวมันเอง
การใช้รหัสซ้ำเพียงเล็กน้อย
การนำโค้ดกลับมาใช้ใหม่ได้ดีที่สุดในการทดสอบคือ imho 'Checks' เช่นเดียวกับใน jUnits assertThat
เพราะมันทำให้การทดสอบง่ายขึ้น นอกจากนั้นหากการทดสอบสามารถ refactored รหัสหุ้นรหัสจริงการทดสอบมีแนวโน้มที่สามารถเกินไปซึ่งช่วยลดการทดสอบกับคนที่ทดสอบฐาน refactored