จนถึงตอนนี้ เรามีการทดสอบ Array และฟังก์ชัน sizeof() เพียงสองครั้งเท่านั้น เมื่อเราเริ่มทดสอบฟังก์ชัน array_*() จำนวนมาก เราจำเป็นต้องมีการทดสอบฟังก์ชันแต่ละรายการ เราสามารถเขียนทีละอันตั้งแต่เริ่มต้น อย่างไรก็ตาม แนวทางที่ดีกว่าคือเขียนโครงสร้างพื้นฐานการทดสอบเพียงครั้งเดียว จากนั้นจึงเขียนเฉพาะส่วนต่างๆ ของการทดสอบแต่ละรายการเท่านั้น PHPUnit เป็นโครงสร้างพื้นฐานดังกล่าว
ตัวอย่างที่ 5 แสดงวิธีการเขียนการทดสอบทั้งสองใหม่ในตัวอย่างที่ 4 โดยใช้ PHPUnit
ตัวอย่างที่ 5 ทดสอบ Array และ sizeof() ด้วย PHPUnit
<?php
need_once 'PHPUnit2/Framework/TestCase.php'
คลาส ArrayTest ขยาย PHPUnit2_Framework_TestCase {
ฟังก์ชั่นสาธารณะ testNewArrayIsEmpty () {
//สร้างฟิกซ์เจอร์อาร์เรย์
$ฟิกซ์เจอร์ = อาร์เรย์( );
// ยืนยันว่าขนาดของฟิกซ์เจอร์อาเรย์คือ 0
$this->assertEquals(0, ขนาดของ($fixture));
-
ฟังก์ชั่นสาธารณะ testArrayContainsAnElement () {
//สร้างฟิกซ์เจอร์อาร์เรย์
$fixture = Array( );
// เพิ่มสมาชิกเข้าไปในอาร์เรย์ฟิกซ์เจอร์
$fixture[] = 'องค์ประกอบ';
//ยืนยันว่าขนาดของฟิกซ์เจอร์อาเรย์คือ 1
$this->assertEquals(1, ขนาดของ($fixture));
-
-
?>
ตัวอย่างที่ 5 บอกเราถึงขั้นตอนพื้นฐานในการใช้ PHPUnit เพื่อเขียนการทดสอบคือ:
1. คลาสทดสอบสำหรับคลาสคลาสคือ ClassTest
2. โดยทั่วไป ClassTest จะสืบทอด PHPUnit2_ Framework_TestCase
3. Test เป็นวิธีการสาธารณะที่ไม่มีพารามิเตอร์ และชื่อคือ test*
4. ในวิธีทดสอบ ฟังก์ชันการยืนยัน เช่น assertEquals() (ดูตารางที่ 6) ใช้เพื่อยืนยันว่าค่าจริงตรงกับค่าที่คาดหวังหรือไม่
เฟรมเวิร์กเช่น PHPUnit จำเป็นต้องแก้ไขปัญหาจำนวนหนึ่ง ซึ่งบางปัญหาดูเหมือนจะขัดแย้งกัน การทดสอบต้องเป็นไปตามเงื่อนไขต่อไปนี้ด้วย:
Easy to learn
Tests must be easy to learn,มิฉะนั้นนักพัฒนาจะไม่เรียนรู้
Easy to development
Tests must be easy to development,มิฉะนั้นนักพัฒนาจะไม่พัฒนา
Easy to read
Test code must have no external diabetes. เพื่อให้การทดสอบนั้นไม่หลงทางในความยุ่งเหยิง
ง่ายต่อการดำเนินการ
การทดสอบควรดำเนินการได้ง่าย และผลลัพธ์ของการดำเนินการควรแสดงในรูปแบบที่ชัดเจนและไม่คลุมเครือ
การทดสอบการดำเนินการอย่างรวดเร็ว
ควรดำเนินการอย่างรวดเร็วเพื่อให้สามารถดำเนินการได้หลายพันครั้งต่อวัน
การทดสอบการแยกโค้ด
ไม่สามารถส่งผลกระทบซึ่งกันและกัน และการเปลี่ยนแปลงลำดับการทดสอบไม่ควรส่งผลต่อผลลัพธ์
Composable
เราควรจะสามารถทำการทดสอบโดยใช้ชุดค่าผสมใดก็ได้ ซึ่งเป็นข้อพิสูจน์ของการแยกโค้ด
มีข้อขัดแย้งหลักสองประการระหว่างข้อจำกัดเหล่านี้:
ความง่ายในการเรียนรู้เทียบกับความง่ายในการพัฒนา
การทดสอบโดยทั่วไปไม่ต้องการความยืดหยุ่นในการเขียนโปรแกรมอย่างเต็มที่ เครื่องมือทดสอบจำนวนมากมีภาษาสคริปต์ทดสอบของตัวเอง ภาษาเหล่านี้มีชุดคุณสมบัติขั้นต่ำที่จำเป็นในการเขียนการทดสอบเท่านั้น เนื่องจากไม่มีสัญญาณรบกวนที่จะรบกวนเนื้อหาการทดสอบของคุณ การทดสอบข้อเขียนจึงง่ายต่อการอ่านและเขียน แต่การเรียนรู้จดหมายถักและชุดเครื่องมือใหม่ยังคงไม่สะดวกและสับสนได้ง่าย
การแยกโค้ดกับการดำเนินการที่รวดเร็ว
หากคุณต้องการให้ผลลัพธ์ของการทดสอบหนึ่งไม่ส่งผลกระทบต่ออีกการทดสอบหนึ่ง คุณต้องสร้างหัวข้อเต็มสำหรับการทดสอบเมื่อเริ่มต้นการทดสอบแต่ละครั้ง จากนั้นจึงกู้คืนสถานะก่อนดำเนินการ อย่างไรก็ตาม การตั้งค่าสถานะใช้เวลานาน (เช่น การเชื่อมต่อกับฐานข้อมูลและการเริ่มต้นเป็นสถานะที่รู้จักด้วยข้อมูลจริง)
วิธีแก้ปัญหาของ PHPUnit สำหรับปัญหานี้คือการใช้ PHP เป็นภาษาทดสอบ บางครั้ง PHP ที่มีฟีเจอร์ครบถ้วนก็มีประสิทธิภาพมากเกินไปสำหรับการเขียนการทดสอบสั้นๆ ที่ตรงไปตรงมา แต่โปรแกรมเมอร์ที่เราใช้ก็มีประสบการณ์กับ PHP อย่างเต็มรูปแบบอยู่แล้ว เนื่องจากเราจำเป็นต้องโน้มน้าวผู้ทดสอบที่ไม่เต็มใจ การลดอุปสรรคในการเขียนการทดสอบเบื้องต้นจึงมีความสำคัญอย่างยิ่ง