ฉันสร้างปลั๊กอินสำหรับ Symfony 1.4 (PHP)เพื่อแก้ไขปัญหานี้ (อื่น ๆ ) มันถูกจำลองตามวิธีการทำงานของกรอบการทดสอบของ Django (Python) : เฟรมเวิร์กจะสร้างและเติมฐานข้อมูลการทดสอบแยกต่างหากก่อนที่การทดสอบแต่ละครั้งจะเริ่มขึ้นและจะทำลายฐานข้อมูลการทดสอบหลังจากการทดสอบแต่ละครั้งเสร็จสิ้น
ฉันมีข้อกังวลสองสามข้อเกี่ยวกับกลยุทธ์นี้ทั้งในแง่ของประสิทธิภาพ (ถ้า schema ไม่เปลี่ยนแปลงทำไมไม่เคลียร์ข้อมูลแทนที่จะสร้างโครงสร้างทั้งหมดขึ้นมาใหม่อีกครั้ง) และความสะดวกสบาย (บางครั้งฉันต้องการตรวจสอบฐานข้อมูลหลังจาก ทดสอบความล้มเหลวดังนั้นอย่าทำลายมันแบบสุ่ม!) ดังนั้นฉันจึงใช้วิธีที่แตกต่างออกไปเล็กน้อย
ก่อนที่จะทำการทดสอบครั้งแรกฐานข้อมูลจะถูกทำลายและสร้างใหม่ในกรณีที่มีการเปลี่ยนแปลงรูปแบบตั้งแต่การทดสอบครั้งล่าสุด ก่อนที่การทดสอบแต่ละครั้งจะรันข้อมูลในฐานข้อมูลจะถูกล้างออก แต่โครงสร้างจะไม่ถูกสร้างใหม่ (แม้ว่าการสร้างใหม่ด้วยตนเองสามารถถูกทริกเกอร์จากการทดสอบหากจำเป็น)
โดยการเลือกโหลดการติดตั้งข้อมูลในการทดสอบแต่ละครั้งหนึ่งสามารถสร้างสภาพแวดล้อมที่เหมาะสมสำหรับการทดสอบนั้นโดยไม่รบกวนการทดสอบที่ตามมา ไฟล์ติดตั้งยังสามารถใช้ซ้ำได้ซึ่งทำให้งานนี้ลดภาระลงมาก (แม้ว่ามันจะเป็นส่วนที่ฉันชอบน้อยที่สุดในการทดสอบการเขียน!)
ในทั้งเฟรมเวิร์กการทดสอบอะแดปเตอร์ฐานข้อมูลถูกกำหนดค่าให้ใช้การเชื่อมต่อการทดสอบแทนการเชื่อมต่อ "การผลิต" เพื่อป้องกันการดำเนินการทดสอบจากการทำลายข้อมูลที่มีอยู่