ฉันมีสิ่งนี้:
public byte[] EncodeMyObject(MyObject obj)
ฉันได้รับการทดสอบหน่วยเช่นนี้:
byte[] expectedResults = new byte[3]{ 0x01, 0x02, 0xFF };
Assert.IsEqual(expectedResults, EncodeMyObject(myObject));
แก้ไข: สองวิธีที่ฉันเห็นเสนอคือ:
1) การใช้ค่าที่คาดไว้ของฮาร์ดโค้ดเช่นตัวอย่างด้านบน
2) การใช้ตัวถอดรหัสเพื่อถอดรหัสอาร์เรย์ไบต์ที่เข้ารหัสและเปรียบเทียบวัตถุอินพุต / เอาต์พุต
ปัญหาที่ฉันเห็นด้วยวิธีที่ 1 คือมันเปราะมากและต้องใช้ค่าฮาร์ดโค้ดจำนวนมาก
ปัญหาเกี่ยวกับวิธีที่ 2 คือการทดสอบตัวเข้ารหัสขึ้นอยู่กับตัวถอดรหัสทำงานอย่างถูกต้อง หากตัวเข้ารหัส / ตัวถอดรหัสแตกเท่ากัน (ในที่เดียวกัน) การทดสอบอาจทำให้เกิดผลบวกปลอม
สิ่งเหล่านี้อาจเป็นวิธีเดียวในการทดสอบวิธีการนี้ หากเป็นเช่นนั้นก็ดี ฉันถามคำถามเพื่อดูว่ามีกลยุทธ์ที่ดีกว่าสำหรับการทดสอบประเภทนี้หรือไม่ ฉันไม่สามารถเปิดเผยข้อมูลภายในของโปรแกรมเปลี่ยนไฟล์ที่ฉันกำลังทำงานได้ ฉันถามโดยทั่วไปว่าคุณจะแก้ปัญหาประเภทนี้อย่างไรและฉันไม่รู้สึกว่าภายในมีความสำคัญ สมมติว่าวัตถุอินพุตที่กำหนดจะสร้างอาร์เรย์ไบต์เอาต์พุตเดียวกันเสมอ
myObject
ไปจากmyObject
ไป{ 0x01, 0x02, 0xFF }
? อัลกอริทึมนั้นสามารถพังและทดสอบได้หรือไม่? เหตุผลที่ฉันถามอยู่ในขณะนี้ดูเหมือนว่าคุณมีการทดสอบที่พิสูจน์ได้ว่าสิ่งมหัศจรรย์สิ่งหนึ่งผลิตสิ่งมหัศจรรย์อีก ความมั่นใจเพียงอย่างเดียวของคุณคืออินพุตเดียวสร้างเอาต์พุตเดียว หากคุณสามารถทำลายอัลกอริทึมคุณสามารถเพิ่มความมั่นใจในอัลกอริทึมและพึ่งพาการอินพุตและเอาต์พุตเวทมนตร์น้อยลง